sscanf输入无效

时间:2015-04-19 14:36:12

标签: c++ scanf

我有这样的标签分隔记录

1000    Muhammad Aashir 0213-4211685    123456  0

首先我通过使用fgets读取了这一行,现在我正在尝试使用sscanf提取内容,但是出现意想不到的问题...请帮助我是初学者

这是代码

char buffer[SIZE];
Account req;
while(fgets(buffer,SIZE,fptr))
{
    cout<<endl<<buffer<<endl;
    sscanf(buffer,"%d\t%s\t%s\t%s\t%ld\n",&req.acc_num,req.name,req.mobileno,req.pass,&req.acc_bal);
    cout<<endl<<req.pass;
}

BUFFER的输出与记录行

相同

但在提取值后,当我显示&#39; req.pass&#39;值不正确

req.pass正在显示&#39; 0213-4211685&#39;但它必须显示&#39; 123456&#39;

1 个答案:

答案 0 :(得分:3)

sscanf将捕获,直到达到任何类型的空白。在您的情况下,req.name仅包含Muhammad。这将导致其余变量包含错误的信息。

如果您需要使用sscanf(),则必须使用转义字符替换名称中的“”实例,例如“_”。