0

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

#include <stdio.h>                               

int main ()                                      
{                                                

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

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

请让我知道我哪里出错了!我知道还有其他方法可以测试整数字符串,但我想知道我哪里出错了!帮助将不胜感激!提前致谢

4

2 回答 2

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()or (但仅在必须时)可能更合适。你决定。atoi()isdigit()

于 2013-04-04T03:57:28.477 回答
0

也可以尝试strtol()你想要的。请参阅:atol() v/s。strtol()

于 2013-04-04T03:48:38.313 回答