c语言getchar问题

#include<stdio.h>
int main()
{
char cChar1;
cChar1=getchar();
putchar(cChar1);
putchar('\n');
getchar();
putchar(getchar());
putchar('\n');
return 0;
}
请问,这里为什么会在屏幕输出时多输出一次
就是说输入一次A回车后就会又显示一次A
不应该是和scanf一样的功能吗,为什么scanf就不会重复输出,容易理解多了

getchar()功能是获取一个你输入的字符,必须是字符char类型,putchar()功能是输出一个字符,也只能是char类型,但不管是putchar还是getchar都是只能获取一个字符,而不能超过一个。至于你说的输出一个空行,那可能是因为第二个getchar获取的是你输入了第一个字符后,按了回车,回车也算是一个字符的。因此,输出的其实是回车,不是第二次输入的字符。如果你要获取第二次输入的字符,那你就要再写一个getchar和putchar了。也就是第三个getchar和putchar。
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-03-07
你用了putchar,把刚输入的字符又输出了。所以 说输入一次A回车后就会又显示一次A

scanf是取得输入数据,功能强于getchar,getchar一次只取一个字符。追问

getchar();
putchar(getchar());
return 0;
那请问下,如果这样的话,为什么只显示键盘输入的字符,而putchar不输出。输出的只是一个空行

追答

1 /**********************************
2 File Name: a.c
3 Author: Michael
4 Email:
5 Created Time: 2014-03-07 20:02:52
6 ***********************************
7 #include
8
9 int main() {
10 putchar(getchar());
11 return 0;
12 }
$ gcc a.c

$ ./a
2
2
Michael@mike ~

不会出现你的情况啊

第2个回答  2014-03-07
你不是打了2个putchar吗?
当然显示2个

C语言 getchar()原理及易错点解析
getchar()不会跳过换行符,导致在下一次迭代中直接读取换行符并终止循环。为解决此问题,需要使用额外的getchar()操作或修改scanf()的格式参数。解决scanf()中转化符问题:将scanf("%d",&c);改为scanf("%c",&c);时,控制台中出现了问题,这是因为%c格式会接收任何字符,包括空格,导致第二个sca...

C语言中的getchar()函数不被编译[急]
在C语言编程中,使用getchar()函数时,需确保正确读取用户输入并处理。若使用如下代码:printf("请选择:"); a=getchar();printf("1\\n");应当修改为:printf("请选择:"); a=getchar();getchar();printf("1\\n");原因在于,当你输入一个字符后,必须读取并处理回车键。getchar()函数在接收...

c语言getchar函数的问题
getchar是一次读一个字符的,你可以用while来实现你所说的功能比如说:include <stdio.h> void main(){ char a;while((a=getchar())!='#')printf("%c",a);} 当你没输入'#'时,这个程序就不会终止,每次结束输入都返回之前输入的字符串。于是用 include <stdio.h> void main(){ char ...

getchar()在c语言中是什么意思
getchar()是c语言中的一个输入函数。可以用它来赋一个字符的值。例如:char a;a=getchar()。当你在键盘上输入一个字符(如输入g)后按回车,那么字符变量a的值就是'g'了。与scanf的区别:1、getchar()函数只能输入一个字符型的值,而scanf()函数除了字符型,还可以输入多种数据类型的值,...

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()的位置问题
你的第一个问题:因为你要不停的统计输入的字符再判断,所以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()问题
getchar函数(单个字符的输入函数)例 说明getchar函数的格式和作用。1 #include "stdio.h"2 void main()3 { 4 char ch;5 printf("Please input two character: ");6 ch=getchar();7 putchar(ch);putchar('\\n');8 putchar(getchar());9 putchar('\\n');10 } 程序运行情况如下:Plea...

关于C语言getchar()的问题
因为缓冲区中还有字符),而会直接把这个回车符读取。为避免这种情况,可以在getchar()之前用fflush(stdin);来一次性清空缓冲区中的所有字符,在前面多加一个getchar()只能读取一个字符,如果缓冲区中的字符多于1个,那么加一个getchar()就不能起到作用。

c语言中 getchar () 问题
首先要说明的是getchar函数的返回值是整型,这里你用string类型去接收getchar函数的返回值自然会有问题了。建议你先好好看看getchar函数的原型和用法。 另外就是string类型是字符串类型,判断应该是不等于一个字符串,而不是和一个字符比较。

C语言getchar()问题,耐心的进!
第二个getchar是为了模拟‘按任意键退出’的效果。建议最后引入:stdlib.h 头文件。然后用system("pause")让系统停顿下。include "stdio.h"include "stdlib.h"include "string.h"main(){ \/ int ch1=getchar();fflush(stdin);int ch2=getchar();fflush(stdin);int ch3=getchar();printf("%c ...

相似回答
大家正在搜