C/C++中实现对输入到EOF的判断:
在C/C++中,EOF是一个定义在头文件 stdio.h 中的常量,等于-1。
在C/C++中实现遇到文件结尾符停止读取:
int data;
while(scanf("%d",&data)!=EOF){ //EOF即文件结尾符,-1
printf("%d",data);
}
或者写成下面这种
while(scanf("%d",&data)!=-1)//EOF即-1
键盘手动输入文件结尾符EOF:
windows中如果在cmd中运行某个程序,想在输入数据结束后手动输入EOF,在输入结束后先enter换行,然后Ctrl+Z,然后再enter换行;
如果是在linux中的terminal中运行程序,想在输入数据结束后手动输入EOF,也是在输入结束后先enter换行,然后输入Ctrl+D,然后再enter换行;
直接“Ctrl+Z”或“Ctrl+D”后不换行是不能成功读取到文件结尾符的!!!!
如果想在Clion中的内建运行框run中实现输入数据结束后手动输入EOF,在输入结束后,先enter换行,然后Ctrl+D即可。一定要先enter换行,否则输出会不完整!!Clion中需要进行一些设置后才可以这么做,可以看这篇文章:
https://blog.csdn.net/zgcr654321/article/details/83002440
Python中输入EOF判断:
在C/C++中我们可以使用while((x=input())!=EOF),但是在Python并没有相同功能的系统函数而是需要由自己判断。
while True:
try:
s = int(input())
print(s)
except:
print('input complete')
break
上面这段代码只要输入完成后再多enter一行即结束输入(shell中)。或者我们也可以输入完成后输入Ctrl+Z停止输入。
如果是在pycharm中,则输入结束后enter换行,再输入Ctrl+D结束输入。
while True:
s = int(input())
相当于C中的
while(1)
scanf();
也就是不停的读输入,没有判断EOF的情况。
再通过try except的方法,当出现except的时候,就是到了EOF,这时退出循环,也就是
except:
break
这样就达到了和C中同样的效果。
如果是在Python中读取文件,Python到读取到文件结尾后是返回空字符串的,所以python可以这样判断:
fp = open('path/to/file', 'r', encoding='utf-8')
str = ''
try:
while True:
s = fp.read(10)
if s == '':
break
str += s
finally:
fp.close()
print(str)
或者我们用with来代替try:
str = ''
with open('readme.txt', 'r', encoding='utf-8') as fp:
while True:
s = fp.read(10)
if s == '':
break
str += s
print(str)