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)