gpt4 book ai didi

c - Sscanf 读取一行两次?

转载 作者:太空宇宙 更新时间:2023-11-04 07:14:13 25 4
gpt4 key购买 nike

我只想从文本文件中读取数字,对它们做一些处理,然后继续。

文本文件的格式如下:

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/

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