C语言题,有关getchar()的一个问题

#include "stdio.h"
main()
{char ch;
putchar(getchar());
getchar();
ch=getche();
putchar(ch);
putchar(getch());
}
这是比较getchar getche getch的区别的题,第5行那个getchar()我运行了一下怎么发现他可有可无呢,但书上说他的作用是读出键盘缓冲区的回车,到底什么意思,帮帮忙

getchar 缓冲输入一个字符,即按回车后,字符才送到内存
getche 无缓冲输入,程序直接从键盘读取,回显
getch 与getche相同,除了他不回显

getchar先把你输入的字符先放入缓冲区,当你按了回车后,先将回车放入缓冲区,再在缓冲区送入一个字符给内存,不是你按的回车,是你输入的第一个字符,如果你按一个字符后按回车,到第五行的getchar就接收了你输入的回车,如果你输入了两个以上字符,下一个(就是第五行的)getchar就会接收缓冲区内的第二个字符,直到收到回车,缓冲区为空为止

而getch和getche则是你当时按了什么键输了什么字符都立即接收,并返回给内存,你按一下键不用按回车就接收了,你按回车的话就接收你那个回车键'\n'
温馨提示:内容为网友见解,仅供参考
第1个回答  2006-03-24
getchar getche getch
getchar是对的
后面的我没有见过

putchar(getchar());//接受字符
getchar(); //接受回车

你的字符输入完成后
你会按一下回车吧`````
getchar();就起这个作用
要不然,计算机凭什么知道你这个输入完了没????
第2个回答  2006-03-23
getchar()是一个标准的输入函数,属于无参函数。在使用它之前必须在主函数的上方,加上#include"stdio.h"
另外还有一个就是getch()它与getchar()
的区别就在于getch()接收字符不在屏幕上显示,而另外一个相反。无论你在屏幕上输入多少字符都只接收一个。

参考资料:http://zhidao.baidu.com/question/4533944.html

第3个回答  2006-03-23
getchar 缓冲输入一个字符,即按回车后,字符才送到内存
getche 无缓冲输入,程序直接从键盘读取,回显
getch 与getche相同,除了他不回显
第4个回答  2006-03-23
putchar对而
getcha没有这函数啊;getch()更不可能有啊:你搞错了.

C语言题,有关getchar()的一个问题
getchar 缓冲输入一个字符,即按回车后,字符才送到内存 getche 无缓冲输入,程序直接从键盘读取,回显 getch 与getche相同,除了他不回显 getchar先把你输入的字符先放入缓冲区,当你按了回车后,先将回车放入缓冲区,再在缓冲区送入一个字符给内存,不是你按的回车,是你输入的第一个字符,如果你...

C语言中关于getchar();的一个问题
回答:有问题,getchar得到的字符是必须带回车的,而且你getchar以后直接i++了,while判断的也使i++以后的值了,而不是当前输入的值了。如果你使希望输入了就做判断,那么最好不用getchar,而用getch,要加头文件 #include<conio.h> while((ch[i] = getch()) != '\\0') {……}

C语言中关于getchar();的一个问题
有问题,getchar得到的字符是必须带回车的,而且你getchar以后直接i++了,while判断的也使i++以后的值了,而不是当前输入的值了。如果你使希望输入了就做判断,那么最好不用getchar,而用getch,要加头文件 include<conio.h> while((ch[i]= getch())!= '\\0'){……} ...

问一个c语言关于getchar()的问题
getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).当用户键入回车之后,getchar才开始从stdin流中每次读入一个字符.getchar函数的返回值是用户输入的第一个字符的ASCⅡ码,如出错返回-1,且将用户...

C语言新手:关于getchar()的位置问题
你的第一个问题:因为你要不停的统计输入的字符再判断,所以getchar必须放在循环体里面,否则没有意义。你的第二个问题:因为你按下回车后 也算一个输入。我修改了你的程序如下:include <stdio.h> main(){ int a,b,c,d;char m;a=b=c=d=0;while(1){ m=getchar();if(m>='a'&&m<=...

C语言,关于getchar()的疑问。
while((getchar())!='\\n')\/\/假设我输入a和换行符(回车),那么这里的getchar()读入的是a还是回车?continue; \/\/我觉得是a,这个程序只有第一个字符是有用的,对吗?} 这里是这样执行的,这里等待一个用户输入,如果有,则接收第一个字符,如果这个字符不是回车,那么会再循环一次,继续等待...

请教下C语言getchar ()方面的问题
(c=getchar())!=EOF先做c=getchar(),把输入的字符赋值给c,在判断这个字符是否为EOF,而getchar()!=EOF直接判断,没有赋值。

c语言关于getchar()的问题,小弟菜鸟,望高手帮忙解答
a[0]=a a[1]=b a[2]= a[3]= a[4]= Press any key to continue include <iostream.h> include "stdio.h"int main(){ char a[5]={0};int i=0;while ( (a[i]=getchar()) != '\\n' ){ i++;} for (i=0;i<5;i++){ cout<<"a["<<i<<"]="<<a[i]<<endl;...

关于C语言getchar()的问题
这种情况多见于在上次输入完成时按了回车键,所以产生了一个回车符('\\n'或者'\\r'),这个字符没有被i=getchar()之前的读取操作读取,所以到了这里系统不会再次等待用户从键盘输入(因为缓冲区中还有字符),而会直接把这个回车符读取。为避免这种情况,可以在getchar()之前用fflush(stdin);来一次性...

关于C函数getchar一个小问题
如楼上所说 ch=getchar()!='\\n'C语言里面赋值运算符的优先级是倒数第二,最低的是逗号运算符,如果不加括号,那么ch=getchar()!='\\n'就相当于先比较getchar()!='\\n',再把比较得到的值赋给ch,意义就完全变了,不能达到预期目的 ...

相似回答
大家正在搜