gpt4 book ai didi

c++ - sscanf 格式 C++

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:56:48 24 4
gpt4 key购买 nike

我有一个 sscanf 语句作为

sscanf (fieldname, "%s_%d", name, id);

我输入的是 frog_461,但它显示名称为“frog_461”,ID 为 0。您能否建议正确的方式来提供意见以使该声明有效?就像上面的例子一样,我应该如何输入才能使 name="frog"和 id=461。谢谢。


感谢您的所有意见。目前我无法修改代码,因此我不会尝试寻找另一种方法来让它工作。我只是检查这段代码是否在早些时候工作,如果是,那么用户必须提供什么输入才能使其工作。谢谢。

最佳答案

目前给出的强调 sscanf 局限性的答案是错误的!有一种使用 sscanf 执行此操作的正确方法:

sscanf(fieldname, "%[^_]_%d", name, &id); 

%[^_] 表示读取直到遇到下划线字符。请参阅 man page for scanf 中的 [ 条目.

另外,请注意 id 前面的 & 符号,因为 C 的按值传递语义,必须将指针传递给 id 才能更改它。

顺便说一下,这实际上是一个 C 问题而不是 C++ 问题,因此您可能应该将其标记为这样。如果您使用的是 C++,则有比 sscanf 更好的解析选项。

关于c++ - sscanf 格式 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7969201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com