- 10
- 0
- 约 28页
- 2016-05-03 发布于天津
- 举报
第3章-基本輸出與輸入
第3章 基本輸入與輸出 3-1 C語言的控制台輸入與輸出 3-2 字元的輸入與輸出 3-3 格式化的資料輸入 3-4 格式化的資料輸出 3-1 C語言的控制台輸入與輸出-什麼是控制台輸入與輸出 以C語言建立的控制台應用程式(Console Application)來說,最常使用的標準輸入裝置是鍵盤,標準輸出裝置是電腦螢幕,即所謂的控制台輸入與輸出(Console Input and Output,簡稱Console I/O),如下圖所示: 3-1 C語言的控制台輸入與輸出-輸入與輸出函數 C語言的輸入與輸出功能並非C語言本身的功能,這些函數都是C語言ANSI標準函式庫提供的函數,定義在stdio.h或conio.h標頭檔的函數。 因為C語言標準輸入與輸出,是由新行字元結束的每一行所組成的文字串流,所以stdio.h標頭檔的函數在輸入資料時,就會將使用者按下的Enter鍵和LF(Line Feed)換行字元,轉換成新行字元,成為文字串流的一行資料。 3-2 字元的輸入與輸出 3-2-1 取得單一字元:getchar() 3-2-2 取得單一字元:getch() 3-2 字元的輸入與輸出 在stdio.h和conio.h標題檔提供字元輸入與輸出函數,可以從電腦標準輸入裝置讀取字元和將字元顯示在標準輸出裝置,如下表所示: 3-2-1 取得單一字元:getchar() 在C程式可以使用getchar()函數從標準輸入裝置,通常是指鍵盤讀取使用者輸入的字元,如下所示: c = getchar(); 上述程式碼傳回值是整數int,如果有錯誤傳回EOF。因為函數使用緩衝區,所以需要等到使用者按下Enter鍵後,才會將輸入的字元送給C程式處理。 在讀入字元後,我們可以使用putchar()函數將字元輸出到標準輸出裝置,通常是輸出到螢幕顯示,如下所示: putchar(c); 3-2-1 取得單一字元:getchar() 在C程式除了使用getchar()函數外,我們也可以使用getch()函數從標準輸入裝置讀取一個字元,不過它並沒有使用緩衝區,也不會產生回應,如下所示: c = getch(); 程式碼讀取一個字元,傳回值是輸入字元,因為沒有使用緩衝區,輸入字元馬上就送給C程式處理。 因為getch()函數並沒有回應,所以使用者輸入字元需自行以putchar()函數輸出到螢幕顯示。 3-3 格式化的資料輸入 3-3-1 使用scanf()函數讀取數值資料 3-3-2 讀取多種不同型態的資料 3-3-3 格式化資料輸入的修飾子 3-3 格式化的資料輸入 C語言的格式化資料輸入函數,可以在C程式讓使用者輸入字元、數值或字串值。在C語言標準函式庫stdio.h標頭檔提供2個函數執行格式化的資料輸入和輸出,如下表所示: 3-3-1 使用scanf()函數讀取數值資料 在scanf()函數的格式字串是使用格式字元判斷輸入哪一種資料型態,函數的傳回值是整數int,如果資料讀取成功,傳回輸入的資料數,如果失敗傳回0。例如:使用格式字元%d和%f讀取整數和浮點數值,如下所示: scanf(%d, age); scanf(%f, score); 第1列程式碼的格式字串內含%d表示輸入整數,第2個參數使用「」取址運算子取得變數的記憶體位址,第2列的程式碼是使用%f格式字元讀取浮點數。 3-3-2 讀取多種不同型態的資料-說明 在同一個scanf()函數可以讀取多筆不同資料型態的資料,如下所示: scanf(%f,%d,%f, x, y, z); 上述程式碼的格式字串擁有%f、%d和%f一共3個格式字元,之後也擁有對應的3個變數x、y和z讀取3筆資料,分別是浮點數、整數和浮點數資料,如下圖所示: 3-3-2 讀取多種不同型態的資料-空白字元 在scanf()函數的格式字串可以使用空白字元,空白字元是指Space或Escape逸出字元的\t、\n等,這些字元並沒有用處,scanf()函數並不會處理這些字元,例如:一些空白字元的範例,如下所示: %f%d %f %d %f\t%d %f\n%d 3-3-2 讀取多種不同型態的資料-非空白字元 在格式字串如果擁有非空白字元,使用者在輸入資料時,就需包含這些非空白字元。例如:非空白字元範例,如下所示: %f,%d,%f /* 23.5,45,10.2 */ %f\’%d\’%f /* 23.5’45’10.2 */ %f*%d*%f /* 23.5*45*10.2 */ 格式字串中可以使用「,」、「’」和「*」等字元來分隔,所以輸入3個資料也需要包含此字元,之後的註解文字是輸入範例。 3-3-2 讀取多種不同型態的資料-格式字元和修飾子 在scanf()函數的格式字串一定需要格式字元,一個格式字元可以
原创力文档

文档评论(0)