请各位高手帮我解释一下这个问题????

huangyimo 2008-11-19 10:26:59
#include <stdio.h>
#include <stdlib.h>
void print()
{
printf("\n\t This is an example.\n\n\t You are welcome!!\n\n");
}
int main (void)
{
int flag=1;
char ch;
while(flag)
{printf("\n Input'F'or'f'to start the program print,\n othet to exit:");
ch=getchar();
ch=toupper(ch);
getchar(); 这个getchar();在这里有什么作用,请各位高手帮我解释一下。
if(ch=='F')
print();
else
flag=0;
}
return 0;
}
...全文
87 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangyimo 2008-11-19
  • 打赏
  • 举报
回复
加上这个语句和没加上这个语句 有什么效果呢?为什么要这样啊?
lujun723 2008-11-19
  • 打赏
  • 举报
回复
getchar()连回车都要,所以取完字母后,需要把回车消耗掉,让下次的ch=getchar()能够直接获得字母,3楼说的方法更好些
hhyttppd 2008-11-19
  • 打赏
  • 举报
回复
Read a character from stdin.

输入一个字符的实际是输入了两个字符:
f \n(回车)

stdin维护了一个缓冲区,getchar会从缓冲区取一个字符,因此你的程序必须为下一次读取去掉缓冲区的回车符。
否则,下一次循环将误读入\n,从而。。。。
hhyttppd 2008-11-19
  • 打赏
  • 举报
回复
楼上正确,我错了。。。。
devil_zuiai 2008-11-19
  • 打赏
  • 举报
回复
ch=getchar();//这里敲了一个char后按了回车,ch接收了char
ch=toupper(ch);
getchar(); //这里接收回车
huangyimo 2008-11-19
  • 打赏
  • 举报
回复
能够再详细一点吗?
就呆在云上 2008-11-19
  • 打赏
  • 举报
回复
看注释

#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>


void print()
{
printf("\n\t This is an example.\n\n\t You are welcome!!\n\n");
}
int main (void)
{
int flag=1;
char ch;
while(flag)
{
printf("\n Input'F'or'f'to start the program print,\n othet to exit:");
ch=getchar();
ch=toupper(ch);
while(getchar() != '\n') //这么用就是了,把缓冲区里面的一行输入的剩下的都给剔除了
; //这个getchar();在这里有什么作用,请各位高手帮我解释一下。
if(ch=='F')
print();
else
flag=0;
}
return 0;
}
太乙 2008-11-19
  • 打赏
  • 举报
回复
这个getchar();在这里有什么作用,请各位高手帮我解释一下。 
回收回车符!

hhyttppd 2008-11-19
  • 打赏
  • 举报
回复
等待按下一个字符,但忽略对它处理,没什么用处。

69,371

社区成员

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

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