在文本上写入文件时遇到问题。如您所见,我使用 \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/