发布网友
共5个回答
热心网友
先按字符串输入,然后对字符串进行检查,判定是否符合条件,若符合条件,则转为数值输出。代码如下:
#include <stdio.h>
热心网友
在头文件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;
}
热心网友
那要看你的变量数据类型是什么?如果是字符型,那么可以用字符测试函数(就是你提到的这些),如果是数值数据类型,可以根据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;
}
//---------------------------------------------------------------------------
热心网友
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可以的
热心网友
c标准函数库里面提供了一个叫做isdigit的函数就可以用来了,使用前必须包含头文件ctype.h