【发布时间】:2012-11-02 16:51:24
【问题描述】:
手册页指出sscanf的签名是
sscanf(const char *restrict s, const char *restrict format, ...);
我见过answer on SO,其中使用sscanf 的函数来检查输入是否为整数。
bool is_int(char const* s) {
int n;
int i;
return sscanf(s, "%d %n", &i, &n) == 1 && !s[n];
}
查看!s[n] 似乎建议我们检查sscanf 是否扫描字符序列直到终止字符\0。所以我假设n 代表函数结束时sscanf 将在字符串s 中的索引。
但是变量i 呢?这是什么意思?
编辑:
更明确地说:我看到sscanf 的签名想要一个char * 类型的指针作为第一个参数。格式说明符作为 seconf 参数,因此它知道如何解析字符序列以及与转换说明符一样多的变量作为下一个参数。我现在明白i 是用于保存解析的整数。
由于格式说明符只有一个,我试着推导出n的功能。
我对@987654336@ 的上述假设是否正确?
【问题讨论】:
-
是
int变量sscanf存储解析后的值。 -
整数 (
i) 的地址 (&)。 -
进一步阅读手册页。
-
i表示 iNeedABetterName
标签: c