getchar()的一点感受
2006-04-07 23:19
281 查看
今天花了很长时间看了这样一段小程序:
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,而另一个是回车,这回对这个程序有了深入了了解了吧?
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,而另一个是回车,这回对这个程序有了深入了了解了吧?
相关文章推荐
- 对Go语言的一点初步的感受和经验。
- 学习C语言的一点感受
- 一点感受
- 一点感受 3.22
- 关于前端的优化的一点感受
- 演讲者该注意什么----读“2008中国软件技术英雄会上海站流水帐”的一点感受
- ejb3.0改进给我带来的一点感受
- 一点学习计算机软件的感受
- 关于使用sping MVC框架进行文件上传的一点感受
- java模式的一点感受
- 给网页上加广告的一点感受
- 参加信息系统项目管理师软考考试的一点感受
- 使用IE9 的一点感受
- 敏捷开发的一点感受
- 阿里面试的一点感受 阿里ali片式经历和面试题
- 关于重装cuda8.0与cudnn6.0的一点感受
- [29期] 做完第一个项目后一点感受
- 做项目的一点感受
- 关于程序架构的一点总结和感受
- 首次半马的一点感受