在C中附加到文件的末尾

Son*_*lip 39 c file append fseek

我正在尝试将文件myfile.txt的内容追加到c中第二个文件myfile2.txt的末尾.我可以复制内容,但我找不到附加的方法.这是我的代码:

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);
Run Code Online (Sandbox Code Playgroud)

我不认为我正在使用fseek,但我想要做的是调用fseek将指针放在文件的末尾,然后写入该指针的位置,而不是在该指针的开头.文件.这是正确的方法吗?

cda*_*rke 64

打开并附加:

pFile2 = fopen("myfile2.txt", "a");
Run Code Online (Sandbox Code Playgroud)

然后只是写pFile2,没有必要fseek().

  • @ Wyatt8740:哪里?我的标准说:"*打开带有追加模式的文件(作为模式参数中的第一个字符)将导致对文件的所有后续写入被强制转换为当前的文件结束,无论对fseek的干扰是什么().*当然不是ANSI C,它是ISO C. (2认同)

Ser*_* L. 15

以下文件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);
Run Code Online (Sandbox Code Playgroud)