1. 程式人生 > >C/C++中實現對輸入到EOF的判斷、鍵盤手動輸入檔案結尾符EOF、Python中輸入EOF判斷

C/C++中實現對輸入到EOF的判斷、鍵盤手動輸入檔案結尾符EOF、Python中輸入EOF判斷

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)