您好我正在尝试使用sscanf来测试一个字符串是否为整数但是它总是给出零作为返回值(j),当它给出1(有时没有任何更改)时它没有填充正确的值应收款变量(i)!这是我的代码:
#include <stdio.h>
int main ()
{
char sentence []="123456";
int i=0;
j = sscanf(sentence,"%[0-9]",&i);
return 0;
}
请让我知道我哪里出错!我知道还有其他方法可以测试整数字符串,但我想知道我哪里出错了! 帮助将受到高度赞赏!提前致谢
答案 0 :(得分:1)
如果您想使用sscanf()
进行验证仅限数字(我建议不要这样做),您的格式就会关闭。您必须仅使用char类型来收集提取的数据:
试试这个:
char message[] = "123456";
char buffer[128];
if (sscanf(message, "%127[0-9]",buffer) == 1)
printf("Success : %s\n", buffer);
并使用范围(例如,将其更改为[2-9])以帮助理解基于集合的提取的工作原理。但同样,你只能将它们变成char型缓冲区。
也就是说,如果您需要该值,请使用strtol()
或atoi()
(但仅限于您必须),或者如果您只想验证数字内容,isdigit()
可能会更好适合。你决定了。
答案 1 :(得分:0)
还可以尝试使用strtol()
。请参阅:atol() v/s. strtol()