关于字符输入/输出 求解。
最近在自学C语言,看《C程序设计语言》第二版,在第一章就字符输入输出与文件复制就把我难住了(智商捉急啊)
在字符输入输出介绍了两个函数getchar和putchar,而在文件复制那一节,用到了这两个函数,如下:
#include<stdio.h>
main(){
int c;
c = getchar();
while(c != EOF){
putchar(c);
c = getchar();
}
}
它运行出来什么都没有,可以随便输入,然后按回车可以复制一样的所输入的东西。
这书上说的有点难理解,哪位大哥能给小弟{通俗的}说下,这两个函数的作用,然后在这个程序中是什么意思。
谢谢了(小白请见谅)
[解决办法]
getchar并不是一次只能输入一个字符,它会接收用户按回车之前的所有字符,并将它们同回车一起放入缓冲区中,然后getchar一个字符一个字符的返回,放到c中。调用putchar将c输出,和按不按回车没有关系
一个简单的例子:
用户输入a,b,然后按回车
此时键盘缓冲区中就包括了“a,b,回车”3个字符
第一个getchar返回字符a,由于a!=eof,所以进入while循环,把a输出(putchar)
while内的getchar返回字符b,由于b!=eof,所以把b输出(putchar)
getchar再返回回车,!=eof,所以输出回车
此时缓冲区中的字符都读完了,所以getchar重新等待用户输入