我有一个sscanf声明
sscanf (fieldname, "%s_%d", name, id);
Run Code Online (Sandbox Code Playgroud)
我将输入作为frog_461,但它显示名称为"frog_461",而0显示为id.您能否建议正确的方式来提供输入以使此声明有效?就像上面的例子一样,我应该如何输入我的输入,以便name ="frog"和id = 461.谢谢.
我感谢您的所有投入.目前我无法修改代码,因此我并不是想找到一种让它工作的替代方法.我只是检查这段代码是否早期工作,如果是,那么用户必须提供什么输入才能使其正常工作.谢谢.
Mic*_*eyn 14
到目前为止给出的答案突出了sscanf限制是错误的!使用sscanf有一个正确的方法:
sscanf(fieldname, "%[^_]_%d", name, &id);
Run Code Online (Sandbox Code Playgroud)
在%[^_]阅读方式,直到遇到一个下划线.请参阅条目[的手册页scanf函数.
另外,请注意前面的&符号id是必须传递一个指针id,以便更改它因为C的值传递值语义.
顺便说一句,这实际上是一个C问题,而不是C++问题,所以你应该将它标记为这样.如果您使用的是C++,则有比sscanf解析更好的选项.