EOF小结
最近在复习C基础知识,发现自己挺怕字符的,出的花样太多了,而我正是这方面欠缺,写其他程序的时候也很少专一用到,看《C语言程序设计》发现还是大师的书好啊,很后悔自己怎么没有早早的细细品味那本书。
看到EOF有点搞不明白,里面写了个小程序,怎么都到跳不出while((c=getchar())!=EOF)的循环,getchar返回是int型,EOF是-1,可是输入了所有我能想到的字符,就是挑不出去,最后只好求助于网络。看到一篇博客不错,链接为:http://hi.baidu.com/wanwanwan2008/blog/item/1e6a4915485c6914972b43f0.html
为了自己记忆,我自己也总结一下:
1、EOF:在linux下是ctrl+D,在windows下是ctrl+Z。不过也是只在如下几种情况下(其实是在getchar提示新的一次输入时)作为文件结束符:
(1)执行getchar,输入第一个就是EOF,跳出;
(2)前面输入为换行符时,跳出;
(3)其他情况,连续两次输入EOF,第一次相当于换行,结束当前的输入,第二次才是结束符;
2、getchar是以行为单位进行存取,如下程序:
while((c=getchar())!=EOF) {putchar(c)};
并不是输入一个字符,就输出一个字符,而是按行处理,输入字符,知道遇到换行,或EOF才会输出。
另外应为EOF为-1,一般getchar返回定义为int型。
3、输入字符数组集中情况
(1)用getchar();
(2)scanf接收输入存在字符数组或字符串里,但遇到空格就停止。
(3)getline(cin,str,‘结束符’);
(4)gets等,知道怎么用,能熟用几个