c语言getchar和putchar

while ((ch = getchar()) != '#')
putchar(ch);

为什么putchar一次可以把整个字符串都发出来?不是只送一个吗?如果连续用getchar怎么把输入的字符分别发送进去?

程序分析一下,你就知道为什么了。
ch=getchar();//取得一个字符
while(ch!='*')//只要取得的字符不是“*”,那就执行循环体内的语句。
{
putchar(ch);//输出字符
ch=getchar();//再次取得字符【因为你输入的abc符合循环条件,所以每次输出一个字符后,又调用了一次getchar()函数,再次取得字符,然后判断循环条件,再次输出字符,再次获得字符,如此循环,直到你输入了字符*,才会调用getch();函数】
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-12-10
这个不是所见即所得
因为你输入的这一串字符会被送入一个叫做缓冲区的地方,当遇到空白字符(空格,制表符,换行)才会进行缓冲区的刷新,那时候结果才会显示出来追答

给你大概说明原理。可以把缓冲区看作一个有限长度的管道。例如你输入了ABCD ,此时这些字符就被丢进了这里,当你按下回车(就相当于一次性把ABCD这些字符推出了管道外。管道外刚好有一只狗,一口咬住了A(这就是getchar ()) ,然后不好吃就吐了(这就是putchar()) ,实际上动作太快了,你看到的就是吐出来的ABCD

本回答被网友采纳
第2个回答  2018-12-09
因为有while 循环啊.
你可以c=getchar();
putchar(c);这样每次输入一个,输出一个
相似回答