C/C++中实现对输入到EOF的判断、键盘手动输入文件结尾符EOF、Python中输入EOF判断

版权声明:站在巨人的肩膀上学习。 https://blog.csdn.net/zgcr654321/article/details/83044650

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)

猜你喜欢

转载自blog.csdn.net/zgcr654321/article/details/83044650