C语言,用scanf输入小数后带有字母,怎样判断报错????

如题所述

第1个回答  2013-03-03
你可以尝试使用getchar或者getc一个字符一个字符的读取。
使用scanf是格式化输入,也就是要求输入的数据是具有一定格式的。
而使用getchar或者getc,一个字符一个字读取就没有这个限制。

你可以读取一个字符之后,就分析一下,如果是数字,就放到数字里,如果是小数点,就报错。

具体的代码我就不写了,刚重装的系统。没有IDE。写了怕是错误的。反而误导了你。追问

怎样放到数字里呢?

追答

char类型实际上也是数字,char类型就是根据ASCII进行转换。
例如字母a就是65(好像是,懒得查,你可以百度确认一下)

而字符'1'也是一样的。
如果想把字符的‘1’变成数字的1
我可以给你推荐一个方法

char a = getc(stdin);
int b = a - '0';

因为ASCII里面数字是连续的,所以'0' - '0' 就是0 '1' - '0' = 1
依次类推。

第一次你获得的数据放到
int temp = b;
再读取到一个数字,就写成
temp = temp * 10 + b;

也就是说,例如第一次读取2,那么temp = 2
第二次读取4,那么temp = 2 * 10 + 4 = 24
这样就可以将字符转换成数字了。

第2个回答  2013-03-03
scanf()函数在读取符点型数据时,遇上非数字字符就会结束输入,小数后带有的字母会存到缓存中,供后续的getchar() , scanf("%c") 或scanf("%s")等操作读取。本回答被提问者采纳
第3个回答  2013-03-03
可以点击组件。。编译一下,,可以检查错误
相似回答