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 *
类型的指针作为第一个参数。第二个参数是格式说明符,以便它知道如何解析字符序列,接下来是尽可能多的转换说明符。现在我明白i
用于保存解析出的整数。由于只有一个格式说明符,我试图推断出
n
的功能。我的上述假设对
n
正确吗?
sscanf
存储解析值的int
变量。 - Daniel Fischeri
的地址 (&
)。 - Odedi
表示我需要一个更好的名称。 - Hans Passant