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