【发布时间】:2013-05-27 19:45:59
【问题描述】:
我是一名学习 C 的新手,并试图从在线讲座中理解以下代码。它在字符串中扫描一个整数;如果遇到字符,则 sscanf 失败。
int n; char c;
if (sscanf(string, " %d %c", &n, &c) == 1)
//return the integer
else
// fail
我已经阅读了 sscanf 的手册页,但仍然对检查返回值以及为什么此代码有效感到困惑。他们声明“这些函数返回分配的输入项的数量”。
如果 sscanf 只遇到字符,它会将它们写入 &c...但在这种情况下不会写入 &n。在这种情况下,我会认为 sscanf 的返回值仍然是 1?
【问题讨论】:
-
sscanf不会跳过%d吃%c。如果没有先遇到数字,则返回 0。 -
由于某种原因,sscanf 严格按顺序(按格式字符串)执行此操作的事实完全让我无法理解。谢谢!