请教一个关于getchar(),getche()和getch()函数的问题!

ASCII945 2006-03-20 04:27:02
请问以上这三个函数具体有什么区别?我知道getch()是从控制台读取一个字符但不回显,
但是我想大家能不能举几个具体的例子来说明一下!!!

还有一下这个程序
int main()
{
char choi;
/*getchar()*/ 问题1:为什么这个语句加入后只要输入Y然后就程序结束了??
choi=getchar();
while((choi=='Y')||(choi=='y')){
printf("Hello!\n");
getchar() //问题2:为什么问题1的getchar()不能加入而这里却一定要加入??
choi=getchar();};

return 0;
}
问题3:如果以上的getchar()改为getche()后只要一输入y就马上执行输出语句,
而改为getchar()却要输入后按回车才执行??

谢谢!!只要问题解决马上给分!!!
...全文
132 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ASCII945 2006-03-20
  • 打赏
  • 举报
回复
谢谢,明白了!
expert2000 2006-03-20
  • 打赏
  • 举报
回复
哦。是问题2对应你的问题1。
lclvcstudy 2006-03-20
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main(int argc, char *argv[])
{
char ch;
printf("Please input getchar char:\n");
ch = getchar(); /*该函数知道按下回车键才返回,同时会将输入的字符和回车键回显出来,就是putchar会在下一行输出*/
putchar(ch);
printf("\nPlease input getch char:\n");
ch = getch(); /*输入的时候没有回显*/
putchar('*');
printf("\nPlease input getche char:\n");
ch = getche(); /*输入的时候有回显,但是没有回车输出,就是和putchar会在同一行
e可能表示echo,反复的意思,这样和网络中的就一致了*/
putchar(ch);
printf("\nHello, world\n");
system("PAUSE");
return 0;
}
expert2000 2006-03-20
  • 打赏
  • 举报
回复
上面问题1其实对应你的问题2 。你的问题2答案是,这里是接受键盘输入一个不是y或者Y的字符,以便跳出循环。
expert2000 2006-03-20
  • 打赏
  • 举报
回复
1)getchar()读入stdin中的一个字符,并且转换为无符号扩展的整形值。所以返回值是int
getche()从键盘读取一个字符并回显
getch()从键盘读取一个字符不回显
2)加入语句后,就是2次读取字符。第一次读取的是y,就是你加入的那个getchar()读取的。
第二次,choi=getchar();这个语句其实读取的是回车符。所以后面判断不正确,程序结束。
3)getchar()是从流中读取的,要读取到流结束符才返回。其余2个是从键盘一个一个直接读入的。
ASCII945 2006-03-20
  • 打赏
  • 举报
回复

自己re一个先!!!

33,320

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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