我只想从文本文件中读取数字,对它们做一些处理,然后继续。
文本文件的格式如下:
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]
...
我很困惑为什么要这样做......
最佳答案
如果您的 data.txt
中的每条记录后都有空行,则检查 line[0]
是否为 '\n'
?
检查此代码是否适合您:
#include <stdio.h>
#include <stdlib.h>
FILE *fp;
int main()
{
char line[10];
int row,column,data;
fp = fopen("data.txt","rt");
while(fgets(line, 10, fp) != NULL)
{
if(line[0] == '\n')
continue;
sscanf(line,"%d,%d,%d\n",&row,&column,&data);
printf("[Row: %d Column: %d Data %d]\n", row, column, data);
}
fclose (fp);
return 0;
}
输入文件data.txt
:
0,0,16
0,3,17
0,4,10
1,2,3
输出:
[Row: 0 Column: 0 Data 16]
[Row: 0 Column: 3 Data 17]
[Row: 0 Column: 4 Data 10]
[Row: 1 Column: 2 Data 3]
关于c - Sscanf 读取一行两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26236060/