急!!!用c语言 怎么判断输入的是非数字字符串?? 请各位帮忙

我想判断的是不是从0到100的整数。用atol()转化。结果非数字字符串都成了0.

只要判断输入的字符的ASCII码不在数字0~9的ASCII值范围就行了:

scanf("%s",str);
for(i=0;i<strlen(str);i++)
if (str[i]<'0'||str[i]>'9') ...;

我写了个大概,你要怎么处理判断结果,自己再补充

按你补充的说法,就是碰到非数字就提示吧:
scanf("%s",str);
for(i=0;i<strlen(str);i++)
if (str[i]<'0'||str[i]>'9') {
printf("error");
return;}
printf("%d\n",atoi(str));
return;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-12-03
scanf("%s",str);
for(i=0;i<strlen(str);i++)
if (str[i]<='9');<-----这样就行了,因为是字符串所以他都一个一个来的,所以最多到9;如果是字符的话,比如说是‘c’,那他转换成数字是99,99〉9所以是错的...
第2个回答  2007-12-03
#include <stdio.h>
#include <ctype.h>
/*
判断字符串是否为数字字符串
return 1:是数字字符串
0:不是数字字符串
*/
int IsDigit(char *str)
{
bool flag=true;
int nod=0;//记录小数点位数
for (char* p=str;*p; ++p)
{
if (isdigit(*p))
{
continue;
}
else if (*p=='.')
{
if (++nod>1)//小数点位数大于1时不是数字字符串
{
return 0;
}
}
else
{
return 0;
}
}

return 1;
}
int main()
{
char *str="1234.67";
if (IsDigit(str))
{
printf("%s是数字字符串\n",str);
}
else
{
printf("%s不是数字字符串\n",str);
}
return 0;
}
相似回答