getchar()的一点感受

今天花了很长时间看了这样一段小程序:

1 #include

2 main()

3 {

4     int c;

5     c=getchar();

6      while(c!=EOF)

7     {

8           putchar();

9           c=getchar();

10    }

11 return 1;

12 } 其实这是c程序设计语言的第一个小程序,不过当时我就有点乱了,因为我认为应该是一次只能输出一个字符,可是这个却可以实现多个字符的输出,在当时不理解的情况下,我又将第9行去掉,出来一个结果(可以试一下,是个死循环)。最后和同学讨论了一下,终于理解了。解释一下吧。

4 int c; //这个可以去看一下getchar的声明,就可以知道它的定义其实是int型的。

5 c=getchar();// 获取一个字符,注意:在这里只是获取了一个字符

6 while(c!=EOF)//判断是否结束

7 {

8 putchar();//把第一个数输出

9 c=getchar();//获取下一个数

10 }

重要的问题是循环部分,假如你输入的数是abc,其实这三个数都保存在了缓冲区里,第一次,从缓冲区中读取一个字符,然后循环(我原来想的是一次就结束),将缓冲区中的数据读取结束后才结束。

举个例子:

1 #include

2 main()

3 {

4 int c;

5 c=getchar();

6 putchar();

7 c=getchar();

8 putchar();

9 return 1;

10 }

如果你输入的依然是abc,那么程序会输出ab,并不会让你继续输入数据,因为缓冲区的数据还没有读取结束。

那么还看这个例子,如果输入a后回车呢?结果是输出a就结束,也没有让你输入数据,因为其实你已经输入了两个数据,一个是a,而另一个是回车,这回对这个程序有了深入了了解了吧?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值