C語言裡面如何輸入EOF

2021-07-04 20:22:58 字數 1464 閱讀 4371

每次輸入乙個字元,然後輸出乙個字元:

int main(void)     

return 0;  

}  

結束的時候,要輸入eof,

eof的值為-1

,其中eof的輸入方法為:

1、在windows下面,輸入ctrl+z,然後輸入回車鍵;

2、在linux下面,輸入ctrl+d,然後輸入回車鍵。

下面是自己寫的練習的例程,輸入一段字元後,顯示其中的回車符'\n',空格鍵' ',製表符'\t'。

#include

#include

void main ()

if(c==' ')

if(c=='|')

}printf("%d,%d,%d",n1,n2,n3);}

1.eof作為檔案結束符時的情況:

eof雖然是檔案結束符,但並不是在任何情況下輸入ctrl+d(windows下ctrl+z)都能夠實現檔案結束的功能,只有在下列的條件下,才作為檔案結束符。

(1)遇到getcahr函式執行時,要輸入第乙個字元時就直接輸入ctrl+d,就可以跳出getchar(),去執行程式的其他部分;

(2)在前面輸入的字元為換行符時,接著輸入ctrl+d;

(3)在前面有字元輸入且不為換行符時,要連著輸入兩次ctrl+d,這時第二次輸入的ctrl+d起到檔案結束符的功能,至於第一次的ctrl+d的作用將在下面介紹。

其實,這三種情況都可以總結為只有在getchar()提示新的一次輸入時,直接輸入ctrl+d才相當於檔案結束符。

2.eof作為行結束符時的情況,這時候輸入ctrl+d並不能結束getchar(),而只能引發getchar()提示下一輪的輸入。

這種情況主要是在進行getchar()新的一行輸入時,當輸入了若干字元(不能包含換行符)之後,直接輸入ctrl+d,此時的ctrl+d並不是檔案結束符,而只是相當於換行符的功能,即結束當前的輸入。以上面的**段為例,如果執行時輸入abc,然後ctrl+d,程式輸出結果為:

abcabc

注意:第一組abc為從終端輸入的,然後輸入ctrl+d,就輸出第二組abc,同時游標停在第二組字元的c後面,然後可以進行新一次的輸入。這時如果再次輸入ctrl+d,則起到了檔案結束符的作用,結束getchar()。

如果輸入abc之後,然後回車,輸入換行符的話,則終端顯示為:

abc       //第一行,帶回車

abc       //第二行

//第三行

其中第一行為終端輸入,第二行為終端輸出,游標停在了第三行處,等待新一次的終端輸入。

從這裡也可以看出ctrl+d和換行符分別作為行結束符時,輸出的不同結果。

eof的作用也可以總結為:當終端有字元輸入時,ctrl+d產生的eof相當於結束本行的輸入,將引起getchar()新一輪的輸入;當終端沒有字元輸入或者可以說當getchar()讀取新的一次輸入時,輸入ctrl+d,此時產生的eof相當於檔案結束符,程式將結束getchar()的執行。

C 裡面如何建立唯讀集合

在真正的專案實踐中,有時為了資料安全,我們經常要對集合做一些限制,如只能對集合裡面的內容進行讀取,但不能修改,這時我們可有使用readonlycollection來對集合做一些限制,例如 public class lottery public readonlycollectionresults st...

什麼是EOF ,如何輸入EOF

估計許多同學會遇到這樣的問題,c getchar eof 然後如何去輸入eof讓程式停止呢 看程式int main void return 0 答案是 windows下面ctrl z就相當於eof linux下ctrl d 這個要注意,不同的系統平台可能不同。不乏嘗試一些 ctrl z ctrl c...

Go裡面如何實現廣播?

在go裡面,channel是一種非常關鍵 方便的通訊機制,但是通常我們想要將訊息傳遞給多個消費者可能需要建立多個通道。只要channel的某個訊息被某個消費者讀取了,那麼該值就會被移除,而其他消費者將不會再消費這個訊息。如果我們想實現廣播方式我們可能需要將訊息寫入n個channel。例如 func ...