今天花了很长时间看了这样一段小程序:
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,而另一个是回车,这回对这个程序有了深入了了解了吧?