C编程fscanf

时间:2011-05-03 21:18:12

标签: c text

我有一个包含此内容的文件:

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是结构;

但是不起作用,它正在崩溃。我做错了什么?

此致

2 个答案:

答案 0 :(得分:3)

如果p.telint,那么您需要将指针传递给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 ^ */