EOF:end of file 標誌文件的結尾。
在Windows下,ctrl+Z是文件結束符;
在Linux,Unix,Mac OS X下,ctrl+D是文件結束符;
不過這兩種文件結束符在某些地方還是略有不同。
關於EOF在Linux,Windows下的關係:(見下面例子)
#include<stdio.h>
main(){
int c;
c=getchar();
while(c!=EOF){
putchar(c);
c=getchar();
}
if(c==EOF){
printf("WOW\n");
}
}
在Linux下,我按下ctrl+D,能顯示WOW,說明ctrl+D是代表EOF;
Linux的輸入檢查:當在輸入一串字符時,當按下ctrl+D,立即響應,把ctrl+D之前所輸入的全部放入緩衝區供使用,ctrl+D停止了本次的輸入;(在sdsddsdsdd後沒有回車!) 當ctrl+D單獨使用,那麼相當於EOF;
解釋程序:在第一個sdsdd後,我輸入ctrl+D,程序緊接着輸出sdsdd;
在最後,我直接輸入ctrl+D,然後輸出WOW;
Linux下的ctrl+z表示掛起進程。
Linux下的ctrl+c表示中斷進程。
它們對進程的狀態的影響是不同的。在ps -aux可查看狀態,ctrl+z使stat的值爲t,ctrl+c使stat的值爲i。
在windows下,我單獨按下ctrl+z,能顯示WOW;
Windows的輸入檢查:只有回車鍵按下之後,纔對輸入串進行檢查;如果ctrl+z前面有輸入,將ctrl+z及其之前的內容推入緩衝區,後面的內容丟棄;(在第二行最後是沒有回車的,因爲回車被ctrl+Z截斷的) 單獨使用,相當於EOF;
解釋程序:在第一個輸入中,在ctrl+Z後還輸入了其他內容,但是在輸出中只顯示了abcd(還有ctrl+z的亂碼),在單獨使用ctrl+Z,輸出了WOW;
在windows下,ctrl+D就是一個普通字符。
在windows下,ctrl+C強行終止程序(閃退),然後輸出WOW(即使在前面有輸入的情況下)
關於EOF的實際值,在stdio.h中定義,一般爲-1,但是程序員可以不用瞭解其具體值,但是一定要求,EOF的值不能在char型變量的取值範圍之內。