Je souhaite fusionner deux fichiers dans C et arrêter à la fin.Fusionner deux fichiers dans C
J'ai un programme mais il continue d'épeler des mots même après la fin de mon fichier. Par exemple:
Fichier 1:
a
b
c
Fichier 2:
1
2
3
4
5
Et le résultat que je reçois est:
a
1
b
2
c
3
c
4
c
5
Et je veux:
a
1
b
2
c
3
4
5
Je pense que c'est ma déclaration if
dans ma boucle while
qui est mon problème. Je ne sais pas comment définir cela.
Mon code est:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char d[200]; //char för da.txt
char h[200]; //char för hej.txt
FILE *hptr, *dptr;
hptr = fopen("hej.txt", "r"); //Öppna hej.txt => hptr
dptr= fopen("da.txt", "r"); //Öppna da.txt => dptr
/*
if(((hptr) == NULL && (dptr) == NULL)) //Fall 1
{
printf("Error, båda filerna är tom");
exit(1);
}
if ((hptr) == NULL) //Fall 2 när hej.txt är tom
{
fscanf(dptr,"%[^/]", d); //Hämtar från da.txt
printf("\nFil 2:\n%s", d); //Skriver ut från da.txt
exit(1);
}
if ((dptr) == NULL) //Fall 3 när da.txt är tom
{
fscanf(hptr,"%[^/]", h); //Hämtar från hej.txt
printf("Fil 1:\n%s", h); //Skriver ut från hej.txt
exit (1);
} */
if(hptr != NULL || dptr != NULL) //Fall 4 när ingen fil är tom
{
while (!feof (hptr) && !feof (dptr))
{
if (hptr ***I guess this is the problem*** == feof)
{
fgets(d, 200, dptr);
printf("%s", d);
}
if (hptr == feof)
{
fgets(h, 200, hptr);
printf("%s", h);
}
}
fclose (hptr);
fclose (dptr);
}
//getch();
return EXIT_SUCCESS;
}
'while (! Feof())' est toujours tort (http://stackoverflow.com/questions/5431941/why-is-while-feof-file-always-wrong). – pmg
'feof' est une fonction. Comparer un pointeur de fichier est un non-sens. –
Compile avec les avertissements activés. –