我有这个家庭作业的分配,我必须从一个文件逐一读取行,然后解析它。用fgets读取一行文件,用C中的sscanf解析一个文件?
该文本文件如下所示:行数因文件而异。
NGM8 Nguyen, Michael; 25 30 45 20
SIS7 Sinn, Scott; 30 25 20 21
SMJ0 Smith, Jacob; 27 25 24 26
.....etc
其中第一列是人的ID,接下来就是名称,并在最后四个数字是每周销售数字为4周。
我的代码段读取这个文件是:
char id[5];
char name[50];
int i1, i2, i3, i4;
fgets(temp, sizeof(temp), infile); // where infile is the file pointer passed to this function from main. The file opened successfully in main.
sscanf(temp, "%s %s; %d %d %d %d", id, name, &i1, &i2, &i3, &i4);
printf("id=%s name=%s sales: %d %d %d %d\n", id, name, i1, i2, i3, i4);
这是基于上述的printf屏幕输出:
id=2685531 name=Johnson, sales: 0 16777216 0 7557016
有人可以帮助我? sscanf语句应该如何正确读取这些变量的值?
谢谢。
函数'scanf()'系列中的'%s'说明符在遇到的下一个空白处终止扫描。另外,打印时,使用'%d'格式化'char [5]'变量是没有意义的。 – 2013-03-11 05:58:08
感谢您的反馈。对不起printf中的输入错误。我修正了这一点。 那么如何读取格式为“姓氏,名字”的名称?用sscanf?我如何让sscanf不跳过最后名字和名字之间的空格,而是跳过行中其他任何地方的空格? – user2155560 2013-03-11 16:00:16