我有一个包含此内容的文件:
JS;John Silver;27264543
我希望单独获取信息,如下所示:
姓名:John Silver
代码:JS
电话:27264543
我正在使用它:
while(!eof(fp2))
{
fread(line, 1, 100,fp2);
fscanf(fp2,"%s;%[^;]s,%[^;]d",p.code, p.name, p.tel);
}
printf("Code: %s\n", p.code);
printf("Name: %s\n",p.name);
printf("Telephone: %d\n",p.tel);
p
是结构;
但是不起作用,它正在崩溃。我做错了什么?
此致
答案 0 :(得分:3)
如果p.tel
是int
,那么您需要将指针传递给fscanf
。请改为&p.tel
作为参数。
(但是,这只是猜测,因为我们没有p
类型的定义。)
答案 1 :(得分:1)
您需要检查scanf()
的返回值,而不仅仅是假设它有效。
if (fscanf(fp,"%s;%[^;]s,%[^;]d",p.code, p.name, p.tel) != 3) /* handle error */;
提示:您的示例行从scanf返回2。 scanf在文字s
处失败"%s;%[^;]s,%[^;]d"
/* HERE ^ */