在C中附加到文件的末尾

时间:2013-10-17 14:13:49

标签: 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);

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

2 个答案:

答案 0 :(得分:60)

打开并附加:

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

然后只需写入pFile2,无需fseek()

答案 1 :(得分: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);