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().
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)