我正在尝试使用这段代码,只是想要追加它,而不是覆盖文件。然而,当我使用"a“或"a+”模式时,fseek似乎无法工作。它不是像预期的那样写入文件"This is C Programming Langauge",而是写入"This is tutorialspoint.com C Programming Langauge“。如何才能不覆盖该文件?
我希望能够打开一个已经有文本的文件,将文件指针设置到某个点,并在不覆盖文件中任何其他内容的情况下将文本写入该点。
int main ()
{
FILE *fp;
fp = fopen("file.txt","w+");
fputs("This is tutorialspoint.com", fp);
fseek( fp, 7, SEEK_SET );
fputs(" C Programming Langauge", fp);
fclose(fp);
return(0);
}发布于 2014-09-22 06:57:26
当fseek()工作时,您错误地认为它不工作。问题是,当您以"append“打开一个文件时,就像在fopen("file.txt", "a+");中一样,那么所有的写操作都将被附加到文件的末尾,而不管文件指针的位置。因此,fseek()会正确地将文件指针重新定位为7,但只要再次调用fput(),文件指针就会在输出发生之前定位到文件的末尾。
下面是一个示例,它在fseek()之后读取file.txt,以显示它位于您预期的位置:
#include <stdio.h>
int main ()
{
FILE *fp;
char buffer[100];
fp = fopen("file.txt","a+");
fputs("This is tutorialspoint.com", fp);
fseek( fp, 7, SEEK_SET );
fgets(buffer, sizeof(buffer), fp);
printf("Buffer-->%s<--\n", buffer);
fseek( fp, 7, SEEK_SET );
fputs(" C Programming Langauge", fp);
fclose(fp);
return(0);
}https://stackoverflow.com/questions/25963995
复制相似问题