J'essaie d'ajouter le contenu d'un fichier myfile.txt à la fin d'un second fichier myfile2.txt en c. Je peux copier le contenu, mais je ne trouve pas le moyen de l'ajouter. Voici mon code:
FILE *pFile;
FILE *pFile2;
char buffer[256];
pFile=fopen("myfile.txt", "r");
pFile2=fopen("myfile2.txt", r+);
if(pFile==NULL) {
perror("Error opening file.");
}
else {
while(!feof(pFile)) {
if(fgets(buffer, 100, pFile) != NULL) {
fseek(pFile2, -100, SEEK_END);
fprintf(pFile2, buffer);
}
}
fclose(pFile);
fclose(pFile2);
Je ne pense pas que j'utilise correctement fseek, mais ce que j'essaie de faire, c'est d'appeler fseek pour placer le pointeur à la fin du fichier, puis écrire à l'emplacement de ce pointeur, au lieu du début du fichier. fichier. Est-ce la bonne approche?
Ouvrir avec append:
pFile2 = fopen("myfile2.txt", "a");
alors il suffit d'écrire dans pFile2
, pas besoin de fseek()
.
Après la documentation de fopen
:
`` a '' Ouvert pour l'écriture. Le fichier est créé s'il n'existe pas. Le flux est positionné à la fin du fichier. Les écritures ultérieures dans le fichier se termineront toujours à la fin du fichier alors en cours, quel que soit le type de session (3) ou un événement similaire intervenu.
Donc, si vous pFile2=fopen("myfile2.txt", "a");
, le flux est placé à la fin pour être ajouté automatiquement. il suffit de faire:
FILE *pFile;
FILE *pFile2;
char buffer[256];
pFile=fopen("myfile.txt", "r");
pFile2=fopen("myfile2.txt", "a");
if(pFile==NULL) {
perror("Error opening file.");
}
else {
while(fgets(buffer, sizeof(buffer), pFile)) {
fprintf(pFile2, "%s", buffer);
}
}
fclose(pFile);
fclose(pFile2);