sscanf 输入不工作
sscanf input not working
我有这样的制表符分隔记录
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的输出与记录行相同
但提取值后,当我显示 'req.pass' 时,该值不正确
req.pass 正在显示“0213-4211685”,但它必须显示“123456”
sscanf 将捕获直到到达任何类型的空白。在您的情况下,req.name 仅包含 Muhammad
。这将导致您的其余变量包含错误信息。
如果您需要使用 sscanf()
,您必须将名称中的“ ”实例替换为转义字符,例如“_”。
我有这样的制表符分隔记录
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的输出与记录行相同
但提取值后,当我显示 'req.pass' 时,该值不正确
req.pass 正在显示“0213-4211685”,但它必须显示“123456”
sscanf 将捕获直到到达任何类型的空白。在您的情况下,req.name 仅包含 Muhammad
。这将导致您的其余变量包含错误信息。
如果您需要使用 sscanf()
,您必须将名称中的“ ”实例替换为转义字符,例如“_”。