首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于字符输入/输出 求解。该怎么解决

2014-01-12 
关于字符输入/输出 求解。最近在自学C语言,看《C程序设计语言》第二版,在第一章就字符输入输出与文件复制就把

关于字符输入/输出 求解。
最近在自学C语言,看《C程序设计语言》第二版,在第一章就字符输入输出与文件复制就把我难住了(智商捉急啊)关于字符输入/输出 求解。该怎么解决
在字符输入输出介绍了两个函数getchar和putchar,而在文件复制那一节,用到了这两个函数,如下:
#include<stdio.h>
main(){
   int c;
    
   c = getchar();
   while(c != EOF){
      putchar(c);
      c = getchar();
     }
}
它运行出来什么都没有,可以随便输入,然后按回车可以复制一样的所输入的东西。
这书上说的有点难理解,哪位大哥能给小弟{通俗的}说下,这两个函数的作用,然后在这个程序中是什么意思。
谢谢了(小白请见谅)关于字符输入/输出 求解。该怎么解决
[解决办法]

引用:
Quote: 引用:

调用getchar时.程序就等着用户按键.用户输入的字符被存放在缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中)

那么,大哥,可以不可以这样理解。
#include<stdio.h>
main(){
int c;

c=getchar();
while(c!=EOF){
putchar(c);
c=getchar();
}
}

首先定义c为int类型,然后将getchar赋给c,就是你首先输入一个字符赋值给c,然后使用while循环,你所输入的字符如果不等于文件结束标志(EOF),就putchar输出c,这个putchar是要用回车键的来进行输出的,就起到文件复制的作用了,而EOF就是ctrlz,一旦你输入ctrlz再回车输出就代表循环结束,而最后那个c=getchar(),是将getchar()重新赋值给c,也就重新进入while循环,你输入的如果不等于EOF,就循环。

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重新等待用户输入

热点排行