Toevoegen aan het einde van een bestand in C

Ik probeer de inhoud van een bestand mijnbestand.txt toe te voegen aan het einde van een tweede bestand mijnbestand2.txt in c. Ik kan de inhoud kopiëren, maar ik kan geen manier vinden om toe te voegen. Hier is mijn 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);

Ik denk niet dat ik fseek correct gebruik, maar wat ik probeer te doen is fseek aan te roepen om de aanwijzer aan het einde van het bestand te plaatsen, en dan naar de locatie van die aanwijzer te schrijven, in plaats van naar de begin van het bestand. Is dit de juiste aanpak?


Antwoord 1, autoriteit 100%

Openen met toevoegen:

pFile2 = fopen("myfile2.txt", "a");

schrijf dan gewoon naar pFile2, fseek()is niet nodig.


Antwoord 2, autoriteit 21%

Volgens de documentatie van fopen:

“a” Open voor schrijven. Het bestand wordt aangemaakt als het niet bestaat. De stream is gepositioneerd op
het einde van het bestand. Volgende schrijfacties naar het bestand zullen altijd eindigen op de op dat moment geldende
huur einde van bestand, ongeacht eventuele tussenliggende fseek(3) of iets dergelijks.

Dus als je pFile2=fopen("myfile2.txt", "a");de stream aan het einde plaatst om automatisch toe te voegen. gewoon doen:

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);

Other episodes