用scanf("%d",&select),可如果用户先输入数字在其它(1rrr),我要怎么判断输入错误呢?

如题所述

你可以先判定输入内容是否为数字 若不是数字则判断为输入错误 例如:
void main()
{
int select,……;
char x[100],……;
……
……
scanf("%s"a);
if(a[0]>57||a[0]<48);
printf("error!"); //可以在这里要求重新输入 用for语句或while语句实现
else
{
for(i=0;a[i]='\0';i++)
select=select*10+a[i]-48;
}
……
……
}
当然也可以直接用isdigit判定是否为数字
就是这样的 要比跳过判定复杂一点 希望回答对你有用
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-06-23
用这个函数是没办法判断的。不是数字,是不接收。
第2个回答  2011-06-23
那还使用字符串好一些。

#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>
void main(){
char select[100];int select2=0,i;
fgets(select,100,stdin);
for(i=0;i<strlen(select);i++)
{
if(!isdigit(select[i])){printf("input error");exit(0);}
select2=select*10+(int)select[i]-48;
}
printf("%d\n",select2);
}

用scanf("%d",&select),可如果用户先输入数字在其它(1rrr),我要怎么判...
void main(){ int select,……;char x[100],……;………scanf("%s"a);if(a[0]>57||a[0]<48);printf("error!"); \/\/可以在这里要求重新输入 用for语句或while语句实现 else { for(i=0;a[i]='\\0';i++)select=select*10+a[i]-48;} ………} 当然也可以直接用isdigit判定...

c语言的检查输入错误提示重新输入的问题
接收一个输入的字符串 然后自己写方法判断输入内容是否合法 如果合法 就转换为类型指定类型 然后跳出循环 不合法就继续循环输入。。。‘如果转换类型的函数 可以返回是否转换成功 或者 会弹出 异常 那么只要判断一下返回值 或 处理一下异常捕获 就可以不用自己写方法判断输入是否合法了。。

c语言中数据输入错误了如何提示输入错误并实现要求重新输入
可以使用清理输入流fflush(stdin);这个原因是因为错误输入的内容会保留在输入流,下一次判断会从输入流开始读取,因为错误输入的内容还在,所以直接判断错误,继续循环。但有些编译器并不支持清理输入流。所以我们这时需要用手动输入让其清除。使用getchar();让其接收错误的字符。但这样就会变成这样,如果...

c语言里 输入时 怎么判断是字符还是数字?
if(scanf("%d",&h)!=1)printf("it's not a number!\\n");因为scanf是从缓存中读取输入的数据如果你输入的不是数字,就会返回0,如果是数字就会返回1;一般人不知道scanf还有返回值,就可以看看头文件中scanf的定义了。其实我还有一个更好的办法,你输入的不是数字就要他重新输入,直到输入的是...

判断c语言数字输入范围,用scanf函数输入一个数字 怎么写判断输入的是...
这是伪码:int a;scanf("%d",&a);if(a>0&&a<256)printf("a在1-255之间")

怎么用scanf的返回值 判断输入的是不是一个整数
scanf()函数返回的值为:正确按指定格式输入变量的个数;也即能正确接收到值的变量个数。如:a=scanf("%d",&n);所以只要你输入一个整型,a=1,如果输入的不是整形,是字符串,浮点等等的,a=0;

关于for(;scanf("%d",&n)==1;)的用法 图2是我写的。但是只能输入一个数...
scanf("%d",&n)函数返回值 为实际成功输入变量的个数。 这里只有一个变量n,输入成功则为1 出错时,比如遇到EOF 会返回-1 所以用 scanf("%d",&n)==1 可以判断输入是否结束。至于你的,并没有看到输入函数,应该一次输入也不行的。n是随机值 ...

c语言中while(scanf("%d",&x)==1)是什么意思?
while(scanf("%d",&x)==1)相当于 while(1){scanf("%d",&x)} 就是说只要输入成功就进入循环。然后下一次循环前又先输入;

C语言中用scanf返回值判断时,如果输入一个函数,例如int a;
\/\/然后以字符串方式读取缓冲区,因为缓冲区至少一个字符't',所以不用再次键盘输入if (strlen(test) > 1) \/\/如果读出来的字符串长度大于1,说明上次输入的有剩下的非法字符{printf("输入错误,有非数字字符\\n");rewind(stdin); \/\/清空缓冲区}elseprintf("输入OK!");}return 0;} ...

c语言 scanf输入多值问题 我的方程式 scanf("%d %d", &a,&b); 输入...
我感觉你应该从函数的结构入手,用算法实现,把scanf多值输入改为多个单值输入,例如输入第一个int后,可以判断一下是否需要输入第二个int,

相似回答
大家正在搜