gpt4 book ai didi

C 编程 fprintf 问题

转载 作者:太空狗 更新时间:2023-10-29 15:47:05 26 4
gpt4 key购买 nike

在文本上写入文件时遇到问题。如您所见,我使用 \n 将另一组数据放在下一行。问题是当我关闭文件并再次保存以 \n 结尾的每行数据变为 \n\n 等等。这就是为什么我的文件看起来像这样

第一次保存

 test, test, test
test, test, test

第二次保存

 test, test, test

test, test, test

第三次保存

test, test, test


test, test, test

这就是为什么当我在屏幕上显示它时...中间有垃圾值...我的代码如下:

save(){
int i = 0;
FILE *stream = NULL;
stream = fopen("student.txt", "wt");
printf("\nSaving the student list directory. Wait a moment please...");
printf("\nExiting the program...");
for (i=0; i<recordCtr; i++){
fprintf(stream, "%s, %s, %s\n", array[i]->studentID, array[i]->name, array[i]->course);
}
}

请帮忙...任何建议将不胜感激。提前谢谢你。

最佳答案

不确定你到底做了什么,但如果你在再次保存之前解析文件,你可能忘记从原来的最后一个字符串中删除旧的 \n..

编辑:这实际上是正确的。 OP 使用 fgets 函数,其中包括行终止符。

所以从“test, test, test\n”开始,用 strtok 他会得到“test” “test” “test\n” 这样当它被保存回一个新的换行符时(忘记它)被添加到文件中。

您可以通过将最后一个字符设置为 null 来修复它

linebuffer[strlen(linebuffer)-2] = '\0'

(这是安全的,因为 fgets 本身返回一个以 null 结尾的字符串)

您还可以将 \n 添加到使用的分隔符中,您应该以相同的行为结束(不确定带有 strtok 的空标记,但 IIRC 它们只是被丢弃)。

关于C 编程 fprintf 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4342361/

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