斯坎f 输入不起作用

sscanf input not working

本文关键字:不起作用 输入 斯坎      更新时间:2023-10-16

我有这样的制表符分隔记录

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,"%dt%st%st%st%ldn",&req.acc_num,req.name,req.mobileno,req.pass,&req.acc_bal);
    cout<<endl<<req.pass;
}

缓冲区的输出与记录行相同

但是提取值后,当我显示"req.pass"时,值不正确

req.pass 显示"0213-4211685",但必须显示"123456"

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

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