《C和指標》中關於EOF的問題

2021-07-25 08:29:55 字數 330 閱讀 1691

在這頁中,有這樣一段**,它在某些情況下會爆錯誤,而這些錯誤也是我之前沒有關注過的。

char ch;

...while( (ch=getchar()) != eof)...

ch是char型別,佔8bit,而getchar()返回int,為32bit。因此,將getchar()取得的值強轉為char型別必然會截去一部分,當把這個值與eof做比較時,系統又會將8bit擴充為32bit。在這個過程之中,如果前面的24bit有值不全為0的話,必然會面臨資料不一致。

由於eof定義為-1,在無符號字符集的機器中執行時,永遠都不會相等,因此迴圈會永遠進行下去。

關於C和C 中的指標

指標型別說明符 int pa intpb b 定義型別為指標的變數 指標的解引用 pa 3 引用指標所指向的變數的值 int pa null 初始化指標pa為空 後面可以再為指標pa的位址賦值 pa a 但是不能讓指標pa直接指向常量 pa 3 錯 int a 0 int pa a 初始化指標pa指...

關於C語言的EOF

eof,它是end of file的縮寫,表示 文字流 stream 的結尾。這裡的 文字流 可以是檔案 file 也可以是標準輸入 stdin 比如,下面這段 就表示,如果不是檔案結尾,就把檔案的內容複製到螢幕上。int c while c fgetc fp eof eof不是特殊字元,而是乙個定...

關於EOF的幾個問題

1 如何輸入eof ctrl z in win or ctrl d in linux 2 阻塞式以及非阻塞式 輸入緩衝是行緩衝。當從鍵盤上輸入一串字元並按回車後,這些字元會首先被送到輸入緩衝區中儲存。每當按下回車鍵後,cin.get 就會檢測輸入緩衝區中是否有了可讀的資料。cin.get 還會對鍵盤...