該書應從8章之後開始學習
現在開始第8章 (p199) 字元輸入輸出
緩衝區:是乙個存放內容的臨時儲存區域
為什麼要設定緩衝區:一、將若干個字元作為乙個塊進行傳輸比逐個傳送這些字元耗時少。二、如果輸入了乙個錯的字元,可以用鍵盤的更正功能進行修改。當按下回車鍵的時候就傳送輸入的字元。
但是,互動性的程式需要非緩衝輸入。因此緩衝區與非緩衝區都有各自的用途。
緩衝分為兩類:完全緩衝(fully buffered)i/o和行緩衝(lined-buffered)i/o。前者是緩衝區滿了時被清空(內容被傳送到目的地),經常出現在檔案輸入中。緩衝區的大小取決於系統。後者則是遇到換行字元時被清空。鍵盤輸入是標準的行緩衝。
ansic 將緩衝輸入作為標準,是因為一些計算機被設計為不允許非緩衝輸入。但是在那些相容的機器上,編譯器也提供了專門用於非緩衝輸入的函式系列,位於conio.h的標頭檔案中,我們常用的用於回顯的非緩衝輸入的getche()。(回顯的意思就是我們輸入的字元會在螢幕上顯示,相反的不回顯的輸入將不會在螢幕上顯示輸入的字元)。
流(stream)是乙個理想化的資料流,實際輸入和輸出對映到這個資料流。所以實際上c程式處理的是乙個流而不是直接處理檔案。
鍵盤輸入被稱為stdin的流來表示,而到螢幕(或打字機或其他輸入裝置)上的輸入由乙個被稱為stdout的流表示。
getchar(),putchar(),printf(),scanf()都是標準i/o的成員,他們都與這兩個流打交道。
檔案結束符:eof 其定義為:#define eof (-1) 通常是ctrl+z
重定向 使用乙個不同的通道重定向輸入和輸出。例如輸入到檔案和從檔案輸出,就是將stdin流重新分配至檔案。
如有編譯乙個讀取鍵盤輸入字元並顯示的char.c 檔案,生成char.exe的檔案,要執行到可以在dos環境下輸入char就可以執行了,charbcd.txt 製作檔案abc.txt的副本 因此我們可以重定向輸入和輸出了
混合輸入數字和字元
getchar()會讀取每個字元,包括空格、製表符和換行符;而scanf()讀取數字的時候會跳過空格、製表符和換行符 但是scanf()使用c%讀取字元的時候不會跳過。
C primer plus 第八章(一)
a int a 10 b int ob a c int p a d int function int const int 問 是引用?取位址?答 b表示引用,即 ob是a的別稱,從此ob與a就綁在一起同生同變,簡直就是乙個人 c中 表示取位址 d中函式原型中的形參也是 引用 注意第二形參的 cons...
C Primer Plus 隨記(第八章)
1.建立引用變數 int rat int roatents rat 此式中 不是位址運算子,而是型別表示符,roatents是rat的別名,他們指向相同的值和記憶體單元,改變 roatents的值,rat也會變。roatents是乙個引用變數 int prats rat prat是指標 roaten...
C Primer Plus 學習筆記(第八章)
c primer plus 學習筆記 第八章 c 內聯函式 內聯函式是c 為提高程式執行速度所做的一項改進。常規函式和內聯函式之間的主要區別不在於編寫方式,而在於c 編譯器如何將它們組合到程式中。編譯器將使用相應的函式 替換函式呼叫。對於內聯 程式無需跳到另乙個位置處執行 再跳回來。因此,內聯函式的...