关于getchar()的简单的疑问

Garriot 2004-03-31 12:07:29
我在我的程序的最后加入了getchar()函数,想在程序运行到这里的时候停顿一下,编译后发现,程序在这里根本不停顿,一闪而过,调试发现,getchar()自动获取了‘\n’字符,这是怎么会事啊?
我把getchar()改成了getch()发现目的达到了,程序等待用户输入。但是这个函数好像在C99里并没有提到。
getchar()和getch()这两个函数使用上有什么区别吗?请指教。
...全文
38 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangfjj 2004-03-31
  • 打赏
  • 举报
回复
为了防止这种情况的发生,一般
在第一个getchar()后,刷新输入缓冲区
用fflush(stdin);
或不赋给任何变量的getchar();来“吃掉”这个回车符
#include<stdio.h>

int main()
{
char s;

s=getchar();
fflush(stdin);/*或getchar();*/
printf("%c",s);
s=getchar();

return 0;
}
Garriot 2004-03-31
  • 打赏
  • 举报
回复
搞定了,谢谢
Garriot 2004-03-31
  • 打赏
  • 举报
回复
或者把它优化掉了
zhangfjj 2004-03-31
  • 打赏
  • 举报
回复
不是,
你第一个getchar()输入到
输入缓冲区的有2个字符,即后面的回车符,
所以第二个getchar()接收到的是这个回车,
你程序运行时,好象没有反应。
Garriot 2004-03-31
  • 打赏
  • 举报
回复
我刚才试了一下
#include<stdio.h>

int main()
{
char s;

s=getchar();
printf("%c",s);
s=getchar();

return 0;
}

这个程序的第2个getchar()没有任何反应,是不是编译器把它滤掉了?
RookieStar 2004-03-31
  • 打赏
  • 举报
回复
对,到那边去看看
zhangfjj 2004-03-31
  • 打赏
  • 举报
回复
我才回答过的一个问题
请参见http://expert.csdn.net/Expert/topic/2866/2866169.xml?temp=.8659784
qbql 2004-03-31
  • 打赏
  • 举报
回复
8错

69,336

社区成员

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

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