【发布时间】:2014-12-01 21:11:54
【问题描述】:
我要做的就是从文本文件中读取数字,对它们做一些事情,然后继续。
文本文件格式如下:
0,0,16
0,3,17
0,4,10
...etc.
这是我打印文本文件的代码:
#include <stdio.h>
#include <stdlib.h>
FILE *fp;
main()
{
char line[10];
int row,column,data;
fp = fopen("data.txt","rt");
while(fgets(line, 10, fp) != NULL)
{
sscanf(line,"%d,%d,%d\n",&row,&column,&data);
printf("[Row: %d Column: %d Data %d]\n", row, column, data);
}
fclose (fp);
}
每当我运行它时,它会输出每行两次,所以它说
[Row: 0 Column: 0 Data 16]
[Row: 0 Column: 0 Data 16]
...
而不是
[Row: 0 Column: 0 Data 16]
...
我很困惑为什么会这样......
【问题讨论】:
-
我真的不明白我应该怎么做才能修复这个代码
-
@user2154420:根据您指定的
data.txt,我认为此代码没有任何问题。每条记录后面有空行吗? -
在使用 sscanf 处理“行”之前检查它的长度,并确保它比您期望的最小值长。您还应该检查扫描的返回值。
-
啊哈!即使我的文本编辑器将它显示为一行又一行,但在两行之间还有一个额外的换行符,所以我不得不退格每一行。另外,我不明白这是一个重复的问题......这似乎很不同,另一个问题的答案根本没有帮助我
-
标签: c io text-files scanf csv