wit regels weg halen

Status
Niet open voor verdere reacties.

henk85

Nieuwe gebruiker
Lid geworden
14 jun 2006
Berichten
3
hallo,

ik heb hier een stuk programma die er voor moet zorgen dat als je een text file in leest met witte regels tussen de tekst dat het programma die witte regels verwijdert en die weg zet in een ander text file (uitvoer). alleen mijn probleem is hij haalt maar 1 regel weg en haalt bijvoorbeeld geen 2 witte regels weg.

hier de code:

#include<stdio.h>
#include<string.h>

#define LEZEN "r"
#define SCHRIJVEN "w"

#define REGELLENGTE 256
#define INCLUDE "#include"

void include_file(FILE *, FILE *);

main(int argc, char *argv[]) {

FILE *fpbron, *fpdoel;

if(argc != 3) {
printf("Gebruik: %s file1 file2\n", argv[0]);
}
else if((fpbron = fopen(argv[1], LEZEN)) == NULL) {
printf("%s: kan %s niet openenen\n",argv[0], argv[1]);
}
else if((fpdoel = fopen(argv[2], SCHRIJVEN)) == NULL) {
printf("%s: kan %s niet openenen\n", argv[0], argv[2]);
fclose (fpbron);
}
else {
include_file(fpbron, fpdoel);
fclose(fpbron);
fclose(fpdoel);
}
system("PAUSE");
}



void include_file(FILE *fpin, FILE *fpuit) {
char regel[REGELLENGTE], woord1[REGELLENGTE], woord2[REGELLENGTE];
FILE *fp;

while(fgets(regel, REGELLENGTE, fpin) != NULL)

if (fgetc(fpin) > 0) {
if(sscanf(regel, "%s %s", woord1, woord2) != 2) {
fputs(regel, fpuit);
}
else if(strcmp(woord1, INCLUDE) != 0) {
fputs(regel, fpuit);
}
else if ((fp = fopen(woord2, LEZEN)) = NULL) {
printf("Kan %s niet openenen\n", woord2);
}

else {
include_file(fp,fpuit);
fclose(fp);
}
}
}

mvg,

henk
 
Zonder verder de diepte in te gaan.

while(fgets(regel, REGELLENGTE, fpin) != NULL)

stopt als de eerste lege regel gevonden is.... je zegt immers 'zolang je regels vindt die niet leeg zijn...'

De loop moet zijn:
while (je niet aan het eind van het bestand bent)
als het een lege regel is doe niets
anders regel kopieren
end while
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan