一些關於getchar讀取字元的思考

2022-07-13 04:15:10 字數 657 閱讀 4763

一、getchar是以行為單位進行讀取的。

當我們用getchar來進行字元的讀取,當第乙個字元為有效字元的時候,getchar()也只在遇見』\n』換行符和eof檔案結束符的時候,才會停止字元的輸出。

對此唯一的解釋就是,k&r在編寫c的時候,當時並沒有所謂終端輸入的概念,所有的輸入實際上都是按照檔案進行讀取的,檔案中一般都是以行為單位的。因此, 只有遇到換行符,那麼程式會認為輸入結束,然後採取執行程式的其他部分。同時,輸入是按照檔案的方式訪問的,那麼要結束乙個檔案的輸入就需用到eof (enf of  file). 這也就是為什麼getchar結束輸入退出時要用eof的原因。

二、getchar()的返回值一般情況下是字元,但也有可能是負值。

這裡要強調的一點就是,getchar函式通常返回終端所輸入的字元,這些字元系統中對應的ascii值都是非負的。

這樣就很有可能出現兩個問題:

1.某些合法的字元被「截斷」了以後,恰好等於-1,導致程式在複製的過程中發生了中斷。

2.前面的c不可能取值為eof,導致程式產生了乙個死迴圈。

當然還有另外一種情況,就是編譯器對c語言的實現不夠規範,儘管可能會產生第一種所說的「截斷」和第二種中找不到「eof」的情況,而且編譯器也同時將值賦值給了c,但是,編譯器裡面卻把getchar()返回的值與eof進行比較了,反而導致結果是正確的。

關於getchar的一些思考

這個問題是有一段 引起的 49是 1 的ascii碼 1的結果是很好理解的,但對於 二的結果很是納悶,為什麼會這樣呢?我們都知道ungetc的作用是將字元t送回緩衝區,而getchar是從輸入的緩衝區中獲取乙個字元 getchar的特點 getchar有乙個int型的返回值.當程式呼叫getchar...

關於poi讀取中的一些坑

最近使用poi解析excel遇到了很多問題,由於是第一次使用,遇到了很多坑。上傳的時候 poi對於excel時候,對於office2003和office2007的解析不太一樣,使用不同的方式解析,因此需要在頁面做版本校驗或者後台設定不同版本的處理方式,poi中hssfworkbook,xssfwor...

關於字元變數的一些總結

char 表示的是乙個字元變數,可以按照這種方式定義 char ch1 a char 表示的是乙個字元型別指標,可以按照如下方式定義 char ch1 abcd 這裡ch1儲存的是該字串文字量的a的指標,實驗如下 include stdafx.h include using namespace st...