我想知道为什么sscanf不能正常工作。就是这个案子
我有一个字符串“1,2,3,#”,我想提取不带逗号的数据,代码是

int a1,a2,a3;
char s;
string teststr = "1,2,3,#";
sscanf(teststr.c_str(), "%d,%d,%d,%s",&a1,&a2,&a3,&s);
cout << teststr << endl;
cout << a1 << a2 << a3 << s << endl;

预期的输出应该是123#,但我得到的实际结果是120#a3总是0。
如果我扩展到4个数字,
int a1,a2,a3,a4;
char s;
string teststr = "1,2,3,4,#";
sscanf(teststr.c_str(), "%d,%d,%d,%d,%s",&a1,&a2,&a3,&a4,&s);
cout << teststr << endl;
cout << a1 << a2 << a3 << a4 << s << endl;

然后结果变成1230#
最后一个整数似乎总是0。
为什么会这样?怎么解决?

最佳答案

sscanf(teststr.c_str(), "%d,%d,%d,%s",&a1,&a2,&a3,&s);
                                   ^  passing char variable s to %s (specifier for reading single char is %c not %s)

不如试试这个
sscanf(teststr.c_str(), "%d,%d,%d,%c",&a1,&a2,&a3,&s);

关于c++ - 从sscanf提取数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32676091/

10-09 08:41