gpt4 book ai didi

c - 特定的 sscanf 用法

转载 作者:太空宇宙 更新时间:2023-11-04 01:03:56 25 4
gpt4 key购买 nike

我正在使用 sscanf 将一个 3 字符的字符串读取/解析为一个 int,如下所示:

char strId[4] = "123";
int i;
int count = sscanf(strId, "%i" &i);

我正在测试 count==1 以检查解析是成功还是失败。
“123” 正确成功 - 我想将其视为一个数字。
"aaa" 正确失败 - 我不想将其视为数字。
但是
“2aa” 成功(count==1,i==2)- 但我想将此标识为失败,因为我不想将其视为一个数字。
如何简单解析strId来满足上述条件?

最佳答案

使用 strtol(3)。它允许指定“解析结束”指针(下面的 endptr)。转换完成后,您可以检查它是否指向字符串的末尾。如果不是,则输入中有非数字字符。

long strtol(const char *restrict str, char **restrict endptr, int base);

来自 man strtol:

If endptr is not NULL, strtol() stores the address of the first invalid character in *endptr. If there were no digits at all, however, strtol() stores the original value of str in *endptr. (Thus, if *str is not '\0' but **endptr is '\0' on return, the entire string was valid.)

关于c - 特定的 sscanf 用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28608279/

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