C语言中如何实现验证输入的是否为数字?

isalpha isdigit isalnum 之类的函数就算了 行不通...

输入的数字可能为0~9999之间的数字,要判断输入的是否是这一范围的数还是其他字符
输入符合要求的进入下一语句
输入不符合的,给出提示,要求重新输入,直到输入正确为止
我知道这些函数包含在ctype.h里
另外,三楼的高手,你这个程序符合判定要求了,但如果输入的不是数字,输出ERROR以后不能再输入呀,然后再判断...直到输入正确为止
-----------------------
四楼大侠,用你的代码,比如随便输入dsk,不符合条件不能再次输入呀

先按字符串输入,然后对字符串进行检查,判定是否符合条件,若符合条件,则转为数值输出。代码如下:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int chk_data( char *num )
{
    int i;
    for( i=0;num[i];i++ )
    {
        if ( num[i] >'9'|| num[i] <'0' ) //只要有非数字,就返回错误
            return 0;
    }
    if ( i>4 ) //都是数字,但长度超过4位,返回错误
        return 0;
    return 1;
}

void main()
{
    char str[100];
    while ( 1 )
    {
        printf("input :");
        scanf("%s", str );
        if ( chk_data( str )==0 )
        {
            printf("输入数据错误,请重新输入!\n");
        }
        else
            break;
    }
    printf("%d\n", atoi(str) );
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2010-01-24
在头文件ctype.h中有很多验证变量的函数
所以你要验证字符的话要包含这个头文件 #include<ctype.h>

验证数字的函数是int isdigit(int c),C语言里面所区分大小写的.
下面我给一个例子
#include<ctype.h>
int main()
{
char *str = "2343#fd$%df34343dfsadkj";
int i;
for (i=0; str[i]!='\0'; i++)
{
if (isdigit(str[i]))
{
printf("%c is a digit\n", str[i]);
}
}
return 0;

}
第2个回答  2010-01-24
那要看你的变量数据类型是什么?如果是字符型,那么可以用字符测试函数(就是你提到的这些),如果是数值数据类型,可以根据scanf()的返回值进行判断:

***********************************************

加一个循环不就可以了吗?如下:

//---------------------------------------------------------------------------

#include <stdio.h>

int main(void)
{
int a,fok=1;
do{
if (scanf("%d",&a)&&a>=0&&a<10000) fok=0;
else puts("ERROR! re-input:\n");
fflush(stdin); /*清空缓冲区,避免遗留的字符影响后续的读取*/
}while (fok);/*如果不满足要求,就重新输入*/

printf("%d\n",a);/*如果满足要求,就输出该数字*/
return 0;
}
//---------------------------------------------------------------------------
第3个回答  推荐于2017-11-23
LZ要在C中实现这个功能比较麻烦,需要首先要用字符型输入来判断,之后把字符型转化为整型,我写了一段代码,给LZ参考:
----------------------------------------------------------
#include <stdio.h>

#define MAX 100 //最大输入长度为100

int CharToInt(char *a,int l); //把字符型转化为int型
int Ten(int k); //10的k次幂

int main()
{
char a[MAX];
int b; //最终输入的整数存放在b中
int i,l,flag;
while(1) //输入
{
for(i=0;i<MAX;i++)
{
scanf("%c",&a[i]);
if(a[i]=='\n')
break;
}

l=i;

if(l>4) //长度超过4位,非法输入
{
printf("输入非法,请重新输入\n");
continue;
}
flag=0;
for(i=0;i<l;i++) //判断每个字符是否在0~9之间
{
if(a[i]<'0' || a[i]>'9')
{
flag=1;
break;
}
}
if(flag==1) //其中有一个不在,则输入非法
{
printf("输入非法,请重新输入\n");
continue;
}
break;
}
b=CharToInt(a,l); //把字符型转化为int型

//继续执行下面程序

return 0;
}

int CharToInt(char *a,int l)
{
int i=0;
int b=0;
for(i=l-1;i>=0;i--)
{
b+=(a[i]-'0')*Ten(i);
}
return b;
}

int Ten(int k)
{
int i=0;
int b=1;
for(i=0;i<k;i++)
{
b*=10;
}
return b;
}
----------------------------------------------------------------
可以再次输入啊~~我试了dsk可以的本回答被提问者采纳
第4个回答  2010-01-24
c标准函数库里面提供了一个叫做isdigit的函数就可以用来了,使用前必须包含头文件ctype.h

C语言:如何判断输入的是数字还是其他字符
1、可以用sacnf或gets函数直接接收输入的字符串,然后用循环遍历字符串中每一个字符,判断其是字母还是数字。2、可以用循环调用getch()或getchar()函数来一个一个字符的接收输入,同时判读输入的是字母还是数字。至于怎么判读是字母还是数字,很简单,假设字符c,满足 (c>='a'&& c<='z')|| (c>=...

如何用C语言判断输入的是数字还是字母
1、首先,打开C语言编译器,新建一个初始的.cpp文件,例如:test.cpp。2、其次,在test.cpp文件中,输入C语言代码:char a = getchar(); getchar();if (a <= '9' && a >= '0') printf("数字");else printf("字母");3、然后,编译器运行test.cpp文件,输入数字,此时会成功判断输入内...

"如果输入的不是数字"这就话怎么用c语言写出来?
对于C语言来说数字就是ascII码的 0 - 9,因此判断输入的是数字:if ( '0' <= a && '9' >= a)判断不是的就反过来:if ( !( '0' <= a && '9' >= a) )

c语言中如何判断输入的是字符还是数字
可以使用代码进行判断:include<stdio.h> intmain(){ charc;while(scanf("%c",&c)!=EOF){ getchar();if(c>='0'&&c<='9')printf("%c是数字\\n",c);elseif(c>='a'&&c<='z'||c>='A'&&c<='Z')printf("%c是字母\\n",c);elseprintf("%c是特殊字符\\n",c);} return0;}...

C语言中,如何判断一个字符是否为数字呢?
可以参考下面的代码:int i = 0;while ( i < 10){ scanf("%d",&m);if ( m != 0 || m!= 1) continue;else{ array[i] = m;i++;} } C语言是一门面向过程的计算机编程语言,与C++、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器...

C语言 判断字符是否是一个数字的两种方法
printf("是数字\\n"); }return 0;}自定义函数 include<stdio.h>#include<ctype.h>int main(){ char num; scanf("%c",&num); if(num>='0' && num<='9') printf("是数字\\n"); else printf("不是数字\\n");return 0;} ...

C语言如何判断,输入的是数字。如果不是则输出重新输入的信息。 如不...
用gets读行,然后对每一个字符分析,如果都是数字,再把字符串转换为数值类型。代码如下所示:include <stdio.h>#include <ctype.h>#include <stdlib.h>#include <string.h>int main(){ char str[10]; int bad_flg = 0; \/\/输入错误 do { printf("请输入数字\\n"); ge...

c语言 如何实现判断输入的是否是数字是否是字符
使用ctype.h里面isdigit()和isalpha函数就可以判断了 include <ctype.h> include <stdio.h> int main(){ printf("1 是数字吗? %s\\n",isdigit('1')?"是":"不是");printf("a 是字母吗?%s",isalpha('a')?"是":"不是");return 0;} ...

c语言判断输入的是否是数字(不止一位)
include<stdio.h> intmain(){ charc;c=getchar();\/\/来判断是否为数字,如果是数字那么会返回非0 if(is digit(c)!=0)printf("是数字\\n");\/\/来判断是否为字母,如果是字母那么返回非0 elseif (is alpha(c)!=0)printf("是字母\\n");else printf("是特殊字符\\n");} ...

c语言如何验证输入的是字母还是数字
\/\/输入非数字以及不符合条件时重新输入。include <stdio.h> include <math.h> void main(void){ long a,b,c,h,l,x1,x2;int i,j,k;while(1){ printf("Please input data a:\\n");i=scanf("%d",&a);if(i==0)getchar();while(i==1){ printf("Please input data b:\\n");j...

相似回答