c语言中putchar(getchar())的问题

#include<stdio.h>
void main()
{
char c1,c2;
c1=getchar;
c2=getchar;
putchar(c1);
putchar(getchar());
}
为什么我输入a,b
输出的是abPress any key to continue
而我输入ab
输出的是
a
Press any key to continue

为什么我输入a,b:
实际上
c1=getchar;//此时c1=a
c2=getchar;//c2=,
putchar(c1);//输出a
putchar(getchar());//此时缓冲中有b没有被取出,getchar得到b,所以输出b,程序结束

而我输入ab
输出的是
a
c1=getchar;//c1得到a
c2=getchar;//c2得到b
putchar(c1);//输出c1,那就是a
putchar(getchar());//此时缓冲区还有一个回车,所以getchar得到回车,输出回车
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-05-20
第一个问题,为什么要两个getchar(),没有意义,一个和两个是一样的,getchar()每次只是接受一个字符,并不意味着只能输入一个字符,你输入多个字符,如果程序中有多个getchar,都可以被接受,这个程序就是这样的,通过一个循环实现多个输入。而这段程序的目的,通过一个一个字符的输入方式,写入文件中,并且以#结束。你说的那一段看不懂的地方,其实很简单,首先把已经输入的最后一个字符写入文件,并输出到屏幕上,接着继续输入,直到有一个字符为#为止。
第2个回答  2019-06-21
第一个getchar()是处理回车的吧,比如你输入
字符
a,
但是其实你输入的是
a和一个回车,不过这是不是必要的我不知道原作者怎么想的。
第二个更不用说了,进入了循环就准备在循环里接收字符了,所以加了一句ch=getchar();呗
第3个回答  2020-03-25
第一种写法,c永远是第一次输入的值
第二种写法,每次循环c都会读取下一个字符,才有机会遇到\n而终止。
第4个回答  2012-03-08
//程序不能运行的,里面充满语法错误。改正后才会如你描述的那样。正确的程序如下:
#include<stdio.h>
void main()
{
char c1,c2;
c1=getchar();
c2=getchar();
putchar(c1);
putchar(getchar());
}追问

我是手机输入,漏了两个(),请回归主题,解决主要矛盾

追答

你的括号,分号,逗号全是中文的。其他agalloch21回答得很好,多余的字符在键盘缓冲区,没有读到程序变量中来。