新手遇到问题 请大家帮忙 C编程

jaedongjuly 2012-05-26 06:21:22
char ch[100]="";

printf("请输入:");

while((ch[i]=getch())!=27)
{ printf("*");
i++;
if((ch[i]<48)||(ch[i]>57))
{ i=0;
printf("错误,含有非法字符,请重新输入\n");
printf("请输入:");

}
}
实现从键盘输入0——9的任意数字数字;其他输入为非法。不知到这个程序怎么改和错在那里。
...全文
163 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jaedongjuly 2012-05-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
C/C++ code

main()
{
char ch[100]="";
int i=0;

printf("请输入:");
while((ch[i]=getch())!=27)
{
printf("*");
i++;
if((ch[i-1]<48)||(ch[i-1]>57……
[/Quote]

谢谢大家 问题解决了。
不过我还是先问一下 #1楼 编辑器是什么呀。
jaedongjuly 2012-05-28
  • 打赏
  • 举报
回复
谢谢大家 问题解决了。
不过我还是先问一下 #1楼 编辑器是什么呀。
whoareyou_123456 2012-05-27
  • 打赏
  • 举报
回复
i没有初始化,而且i++;应该放在if判断语句之后
zhanglingxiang 2012-05-26
  • 打赏
  • 举报
回复
getchar是用来获取字符的,并且是按回车就会结束,getchar()返回输入的字符的ASCII码,所以应该是
int ch;
while(ch = getchar())
然而输入数字按回车时又会出错,它返回了数字和回车这两个字符的ASCII码。所以会出错。
PANHL97 2012-05-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
我还是不明白。为什么 只差一个i-1。
这个程序没有问题了。
可是 fp=fopen("G:\\lxwe.txt","w");

if(fp==NULL) {printf("can't open this file!\n"); exit(0);}
fprintf(fp,"%c",ch);
fclose(fp);
却不行了。
[/Quote]
i-1的原因是你用if判断之前已经有个i++了,当然要减1才是你原来输入的字符啊
A_Zhao 2012-05-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

我还是不明白。为什么 只差一个i-1。

[/Quote]

因为你的i++在if的前面呀!



jaedongjuly 2012-05-26
  • 打赏
  • 举报
回复
我还是不明白。为什么 只差一个i-1。
这个程序没有问题了。
可是 fp=fopen("G:\\lxwe.txt","w");

if(fp==NULL) {printf("can't open this file!\n"); exit(0);}
fprintf(fp,"%c",ch);
fclose(fp);
却不行了。
無_1024 2012-05-26
  • 打赏
  • 举报
回复
LS的解法应该可以满足你的要求吧
PANHL97 2012-05-26
  • 打赏
  • 举报
回复

main()
{
char ch[100]="";
int i=0;

printf("请输入:");
while((ch[i]=getch())!=27)
{
printf("*");
i++;
if((ch[i-1]<48)||(ch[i-1]>57))
{
i=0;
printf("错误,含有非法字符,请重新输入\n");
printf("请输入:");
}
}

}

69,377

社区成员

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

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