【发布时间】:2013-03-11 05:48:05
【问题描述】:
我有这个家庭作业,我必须从文件中逐行读取,然后解析它。
文本文件如下所示:行数因文件而异。
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 语句应该是什么样子才能正确读取这些变量的值?
谢谢。
【问题讨论】:
-
%s说明符在scanf()系列函数中会在遇到下一个空格时终止扫描。此外,在打印时,使用%d格式化char [5]变量是没有意义的。 -
感谢您的反馈。抱歉,printf 中的错字。我修好了。那么如何读取格式为“姓氏,名字;”的名称?与 sscanf?如何使 sscanf 不跳过姓氏和名字之间的空格,而是跳过该行其他任何地方的空格??