如何使用CTYPE.H里的isdigit函数

beyondlwm 2005-04-04 09:40:12
isdigit函数据书上说是判断一个字符是否是0-9之间的数字,如果是,则返回1,如果不是则返回0
于是有如下的程序:
main()
{
int a,b=1;
a=isdigit(b);
cout<<a;
getch();
}
最后的结果是0,可是按理说结果应该是1才对啊
我的目的主要是判断用户输入的字符是否是合法的数字(而不是字母或者其他)。
...全文
232 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyupu 2005-04-04
  • 打赏
  • 举报
回复
isdigit的参数是const char
beyondlwm 2005-04-04
  • 打赏
  • 举报
回复
我要求用户输入的数字是在0-99之间,除了这个区间的数字通通看做为非法数字而提示用户重新输入,该如何判断?
jdh2010 2005-04-04
  • 打赏
  • 举报
回复
学习ing
ysbcg 2005-04-04
  • 打赏
  • 举报
回复
#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;
}
}
}
pcboyxhy 2005-04-04
  • 打赏
  • 举报
回复
char b='1';
int a;
a=isdigit(b);
pcboyxhy 2005-04-04
  • 打赏
  • 举报
回复
isdigit( )是针对char型的

b的值是1,ASCII码是1当然不是 0~9(ASCII 48~57)
ysbcg 2005-04-04
  • 打赏
  • 举报
回复
beyondlwm(nobitalwm)
怎么会?
printf("%d",isdigit('a'));
你看看是0
ysbcg 2005-04-04
  • 打赏
  • 举报
回复
#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--;
}
}
}
beyondlwm 2005-04-04
  • 打赏
  • 举报
回复
char b='1';
int a;
a=isdigit(b);


三楼的朋友,我试过你的方法,但是结果是a的值是2~为什么啊~!?
beyondlwm 2005-04-04
  • 打赏
  • 举报
回复
楼上的这个解答虽然是正确的,但是我还想问一点就是
如何让用户输入的长度只占1位。就是无论他输入多少东西,只有一位,类似于网上某些地方填的东西满了以后,以后输入的东西都会自动修改以前输入的。
还有就是,如我
int a
然后让用户输入一个字符,万一用户输入的不是数字而是字母,系统会自动出现死循环,如何限制用户的输入规范?
pcboyxhy 2005-04-04
  • 打赏
  • 举报
回复
char c;
while(1)
{
c=getch();
if(c!='Y' && c!='N')
printf("Input again.\n");
else
break;
}
beyondlwm 2005-04-04
  • 打赏
  • 举报
回复
再问一个问题
很常用的,我需要用户输入一个Y或者是N。
非这两个字符的就提示重新输入
请问如何对用户的输入进行判断?
而且希望用户只能输入一个字符

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧