58

我正在尝试将文件 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 将指针放在文件的末尾,然后在该指针的位置写入,而不是在开头文件。这是正确的方法吗?

4

2 回答 2

92

打开附加:

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

然后就写信给pFile2,没必要fseek()

于 2013-10-17T14:16:20.597 回答
19

遵循以下文档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);
于 2013-10-17T14:17:00.913 回答