gpt4 book ai didi

c - 尝试用 C 语言在文件的每一行末尾写入?

转载 作者:行者123 更新时间:2023-11-30 17:00:59 25 4
gpt4 key购买 nike

过去 3 小时我一直在尝试,但在某一点上陷入困​​境。我想使用 C 在文件的每一行后面添加一些内容。

这是我的代码

int main(){

FILE *fp;
char c;
int p;

fp = fopen("example1.txt","r+");

if (fp == 0) {
perror("No File");
exit(-1);
}

while ( (c = fgetc(fp)) != EOF) {
if (c != '\n')
printf("%c",c);
else {
//Going back two points is for '\n'
fseek(fp,-2,SEEK_CUR);
fprintf(fp,"=2\n");
}
}


fclose(fp);
return 0;
}

输入文件:

1+1
1+1
1+1

期望的输出:

1+1=2
1+1=2
1+1=2

实际输出:

1+1=2
=2
=2
=2
=2
=2

执行进入无限循环..

最佳答案

假设文件中有一行文本。

1+1

如果您将内容按字节视为字符,您将看到:

+---+---+---+----+
| 1 | + | 1 | \n |
+---+---+---+----+

当遇到'\n'时,您将返回两个字符并将"=2\n"打印到文件中。之后,文件的内容将是:

+---+---+---+----+
| 1 | = | 2 | \n |
+---+---+---+----+

fprintf的调用不会改变读取数据的位置。因此,读取位置位于文件的第二个字符 '=' 处。

重复整个过程。文件内容保留

+---+---+---+----+
| 1 | = | 2 | \n |
+---+---+---+----+

输出仍然是

=2

第一行之后。

读取和写入同一个文件充满了太多的陷阱。如果你把它们分开会更好。

关于c - 尝试用 C 语言在文件的每一行末尾写入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37284888/

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