在下面这个函数中#include<stdio.h>int main(void){int c,nl;nl=0;while((c=getchar())!=EOF)if(c=='\n')++nl;printf("%d\n",nl);}这里的EOF具体是怎么控制的?看到网上说有EOF=13的,这不是回车么?但是我这个回车显然不能算作EOF啊!
3 回答
收到一只叮咚
TA贡献1821条经验 获得超4个赞
EOF表示文件结束符,如果你是由键盘取得EOF,那么window系统ctrl+z表示EOF,在Linux/UNIX下则是ctrl+d。所以你这个程序,如果你输入avfdfdfgdfg最后按ctrl+z就会退出循环了。
回首忆惘然
TA贡献1847条经验 获得超11个赞
EOF不是回车, 是C里面规定的一个值,表示输入流的结束
具体值视操作系统而定, 有时可以是-1
所以用EOF判断文件结尾是不安全的, 正规编程不使用
更安全的做法是用feof()函数
慕桂英546537
TA贡献1848条经验 获得超10个赞
在C++中定义这个EOF是-1的,这是合理的,因为ASCII码最小的是0,控制的话,在windows中是用
ctrl + Z(再敲回车),来控制的。
添加回答
举报
0/150
提交
取消