使用附加的fseek()

我正在尝试使用此代码,除了覆盖我想要附加它的文件。 但是,当我使用模式“a”或“a +”时,fseek似乎不起作用。 正如预期的那样,它没有写入文件“This is C Programming Langauge”,而是写了“这是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); } 

你错误地认为fseek()在工作时不起作用。 问题是当你打开一个文件“append”时,如fopen("file.txt", "a+"); 然后,无论文件指针的位置如何,所有写入都将附加到文件末尾。 因此, fseek()正确地将文件指针重新定位到7会发生什么,但是一旦再次调用fputs(),文件指针就会在输出发生之前定位到文件的末尾。

下面是一个示例,它在fseek()之后从file.txt读取,以显示它位于您期望的位置:

 #include  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); }