测试整数时,sscanf()无法正常工作

时间:2013-04-04 03:43:10

标签: c

您好我正在尝试使用sscanf来测试一个字符串是否为整数但是它总是给出零作为返回值(j),当它给出1(有时没有任何更改)时它没有填充正确的值应收款变量(i)!这是我的代码:

#include <stdio.h>                               

int main ()                                      
{                                                

  char sentence []="123456";                     
  int i=0;                                       

   j = sscanf(sentence,"%[0-9]",&i);              
   return 0;                                      
}   

请让我知道我哪里出错!我知道还有其他方法可以测试整数字符串,但我想知道我哪里出错了! 帮助将受到高度赞赏!提前致谢

2 个答案:

答案 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()