如何使用CTYPE.H里的isdigit函数
isdigit函数据书上说是判断一个字符是否是0-9之间的数字,如果是,则返回1,如果不是则返回0
于是有如下的程序:
main()
{
int a,b=1;
a=isdigit(b);
cout<<a;
getch();
}
最后的结果是0,可是按理说结果应该是1才对啊
我的目的主要是判断用户输入的字符是否是合法的数字(而不是字母或者其他)。
问题点数:0、回复次数:12Top
1 楼pcboyxhy(-273.15℃)回复于 2005-04-04 09:45:14 得分 0
isdigit( )是针对char型的
b的值是1,ASCII码是1当然不是 0~9(ASCII 48~57)Top
2 楼pcboyxhy(-273.15℃)回复于 2005-04-04 09:46:11 得分 0
char b='1';
int a;
a=isdigit(b);
Top
3 楼jdh2010(小金)回复于 2005-04-04 10:01:02 得分 0
学习ingTop
4 楼beyondlwm(nobitalwm)回复于 2005-04-04 18:43:53 得分 0
再问一个问题
很常用的,我需要用户输入一个Y或者是N。
非这两个字符的就提示重新输入
请问如何对用户的输入进行判断?
而且希望用户只能输入一个字符Top
5 楼pcboyxhy(-273.15℃)回复于 2005-04-04 18:53:22 得分 0
char c;
while(1)
{
c=getch();
if(c!='Y' && c!='N')
printf("Input again.\n");
else
break;
}Top
6 楼beyondlwm(nobitalwm)回复于 2005-04-04 21:04:49 得分 0
楼上的这个解答虽然是正确的,但是我还想问一点就是
如何让用户输入的长度只占1位。就是无论他输入多少东西,只有一位,类似于网上某些地方填的东西满了以后,以后输入的东西都会自动修改以前输入的。
还有就是,如我
int a
然后让用户输入一个字符,万一用户输入的不是数字而是字母,系统会自动出现死循环,如何限制用户的输入规范?Top
7 楼beyondlwm(nobitalwm)回复于 2005-04-04 21:11:28 得分 0
char b='1';
int a;
a=isdigit(b);
三楼的朋友,我试过你的方法,但是结果是a的值是2~为什么啊~!?Top
8 楼ysbcg(Hummer)回复于 2005-04-04 21:39:51 得分 0
#include <stdio.h>
#include <CONIO.H>
int main() {
int longofs=8;// 你要的长度
char c;
while(1) {
c=getch();
if(c==13) break;
if(0==longofs) {
putchar(8);
putchar(c);
} else {
putchar(c);
longofs--;
}
}
}Top
9 楼ysbcg(Hummer)回复于 2005-04-04 21:44:35 得分 0
beyondlwm(nobitalwm)
怎么会?
printf("%d",isdigit('a'));
你看看是0Top
10 楼ysbcg(Hummer)回复于 2005-04-04 21:49:46 得分 0
#include <stdio.h>
#include <CONIO.H>
int main() {
int longofs=8;// 你要的长度
char c;
int i=0;
while(1) {
c=getch();
if(c==13) break;
else if(c=8) {
putchar(8);
i=c/10;
} else if(c>57||c<48) {
break;
} else {
putchar(c);
i=c*10+c-48;
}
}
}
Top
11 楼beyondlwm(nobitalwm)回复于 2005-04-04 22:26:09 得分 0
我要求用户输入的数字是在0-99之间,除了这个区间的数字通通看做为非法数字而提示用户重新输入,该如何判断?Top
12 楼wuyupu(wuyupu)回复于 2005-04-04 22:27:33 得分 0
isdigit的参数是const charTop




