Подтвердить что ты не робот

Добавить в конец файла в C

Я пытаюсь добавить содержимое файла myfile.txt в конец второго файла myfile2.txt в c. Я могу скопировать содержимое, но не могу найти способ добавления. Здесь мой код:

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

Я не думаю, что правильно использую fseek, но то, что я пытаюсь сделать, это вызвать fseek, чтобы поместить указатель в конец файла, а затем записать в месте расположения этого указателя, а не в начало файла. Это правильный подход?

4b9b3361

Ответ 1

Открыть с добавлением:

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

то просто напишите в pFile2, не нужно fseek().

Ответ 2

Следуя документации fopen:

`` a '' Открыт для записи. Файл создается, если он не существует. Поток расположен в              конец файла. Последующие записи в файл всегда будут заканчиваться в то время,              рента конца файла, независимо от любого промежуточного fseek (3) или подобного.

Итак, если вы pFile2=fopen("myfile2.txt", "a");, поток будет помещен в конец для добавления автоматически. просто выполните:

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