gpt4 book ai didi

c - 将 fseek() 与附加一起使用

转载 作者:太空宇宙 更新时间:2023-11-04 02:02:08 24 4
gpt4 key购买 nike

我正在尝试使用这段代码,除了我不想覆盖文件之外,我只想附加它。但是,当我使用模式“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);
}

最佳答案

您错误地认为 fseek() 没有工作,而实际上它正在工作。问题是,当您打开文件进行“追加”时,如 fopen("file.txt", "a+"); 中所示,那么无论文件指针的位置如何,所有写入都将附加到文件末尾。所以,发生的事情是 fseek() 正确地将文件指针重新定位到 7,但是只要您再次调用 fputs(),文件指针就会在输出发生之前定位到文件末尾.

这是一个示例,它在 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);
}

关于c - 将 fseek() 与附加一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25963995/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com