手册页指出的签名sscanf
是
sscanf(const char *restrict s, const char *restrict format, ...);
我在 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
.
我上面的假设是否n
正确?