我在编程课程上有一些作业,我正在用C上这学期,并且在使用sscanf
函数时遇到了一些麻烦。
该程序实际上应该以以下形式从用户那里接收一行学生的详细信息:
<ID> <NAME> <GRADE> <AGE> <COUNTRY> <CITY>
对于每个字段的格式,我们都有一些限制,例如ID字段必须为10位数字且不能以0开头。
输入的重要内容是:用户必须将其详细信息用制表符(\ t)分隔。
因此,我尝试使用sscanf
将其拆分为多个字段。
我以为如果使用[^\t\n ]
,它将“理解”这是一个字段。
问题出在sscanf
上,这是我对函数的使用:
// Parse his details
sscanf(line,"%[^\t\n]\t%[^\t\n ]\t%u\t%u\t%[\t\n ]\t%[\t\n]\t",tmpStudent.ID,tmpStudent.name,&tmpStudent.grade,&tmpStudent.age,tmpStudent.country,tmpStudent.city);
但是,当我运行程序时,ID变量“吃掉了”名称字段,而名称字段为空。
我该如何克服这个问题?
谢谢。