解析整数而不在C中附加char

我想解析一个整数,但我的下面的代码也接受像“3b”这样的字符串,它以数字开头,但附加了字符。 我如何拒绝这样的字符串?

#include  #include  int main(int argc, char *argv[]) { int n; if(argc==2 && sscanf(argv[1], "%d", &n)==1 && n>0){ f(n); return 0; } else{ exit(EXIT_FAILURE); } } 

对于您的问题,您可以使用#include 库中的strtol()函数。

如何使用strtol ( 教程点的示例代码 )

 #include  #include  int main(){ char str[30] = "2030300 This is test"; char *ptr; long ret; ret = strtol(str, &ptr, 10); printf("The number(unsigned long integer) is %ld\n", ret); printf("String part is |%s|", ptr); return(0); } 

strtol内部,它扫描str ,将单词存储在指针中,然后是转换数字的基数。 如果基数介于2和36之间,则将其用作数字的基数。 但我建议将零置于10,这样它会自动选择正确的数字。 其余的存储在ret

ctype.h库为您提供函数isdigit(char)函数,该函数返回作为参数提供的char是否为数字。
你可以迭代argv [1]并以这种方式检查它。