第5章 基本輸入與輸出 5-1 程式的輸入與輸出 5-2 字元與字串的輸入 5-3 字元與字串的輸出 5-4 格式化資料的輸入

Slides:



Advertisements
Similar presentations
第一單元 建立java 程式.
Advertisements

計算機程式語言實習課.
輸出與輸入(I/O).
File Access 井民全製作.
基本輸入與輸出 王振生.
C 語言簡介 - 1.
第8章 字元與字串處理 8-1 C語言的字元檢查函數 8-2 C語言的字串 8-3 字串的輸入與輸出 8-4 指標與字串
Instructor:Po-Yu Kuo 教師:郭柏佑
程式語言的基礎 Input Output Program 世代 程式語言 第一世代 Machine language 第二世代
Chapter 3 輸出入及宣告.
程式設計 博碩文化出版發行.
C 程式設計— 字元與字串 台大資訊工程學系 資訊系統訓練班.
C++ 程式設計— 語言簡介 台大資訊工程學系 資訊系統訓練班.
複習 int count=8; int* pt=&count; //等於 pt=&count, //不等於*pt=&count
Visual C++ introduction
C Shell Programming.
第8章 字元與字串處理 8-1 C語言的字元檢查函數 8-2 指定字串的初值 8-3 指標與字串 8-4 字串處理 8-5 C語言的字串函數.
2-3 基本數位邏輯處理※.
2 C++ 程式概論 2.1 C++ 程式結構 程式註解 // 插入標題檔 #include 2-3
【變數與記憶體位址】 變數(Variable)提供一個有名稱的記憶體儲存空間。一個變數包含資料型態、變數本身的值及它的位址值。
String C語言-字串.
JAVA 程式設計與資料結構 第六章 輸出與輸入.
101北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
Java程式概觀.
SQL Stored Procedure SQL 預存程序.
安裝JDK 安裝Eclipse Eclipse 中文化
C++ 程式設計— 語言簡介 台大資訊工程學系 資訊系統訓練班.
第二章 顺序结构 1 数据类型和标识符、常量与变量 2 运算符和表达式 3 简单的输入输出 4 程序举例.
|13 檔案資料讀寫.
第3章 指標與字串 (Pointers and Strings)
Java 程式設計 講師:FrankLin.
第10章 檔案與資料夾處理 10-1 檔案的基礎 10-2 文字檔案的讀寫 10-3 二進位檔案的讀寫 10-4 檔案與資料夾處理.
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
Chap3 Linked List 鏈結串列.
程式設計實習課(四) ----C 函數運用----
第一單元 建立java 程式.
第三章 資料型態與輸出控制 本章學習目標 認識Matlab的基本資料型態 練習資料型態的轉換 學習如何控制Matlab的輸出格式
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab6.
第 19 章 XML記憶體執行模式.
JAVA 程式設計 資訊管理系 - 網路組.
第3章 變數、算術運算、 數學函數及輸入輸出.
輸入&輸出 函數 P20~P21.
第十章 指標.
第九章 字串.
Introduction to C Programming
第一次Labview就上手 參考書籍: LabVIEW for Everyone (Jeffrey Travis/Jim Kring)
撰寫MATLAB基礎財務程式 柯婷瑱.
第7章 指標 7-1 指標的基礎 7-2 指標變數的使用 7-3 指標運算 7-4 指標與陣列 7-5 指向函數的指標.
挑戰C++程式語言 ──第8章 進一步談字元與字串
認識常數與變數 學習C++所提供的各種基本資料型態 瞭解溢位的發生 學習認識資料型態之間的轉換
C qsort.
File Input and Output Chap. 11: 施威銘的書 Chap. 7: K&R.
挑戰C++程式語言 ──第7章 輸入與輸出.
MiRanda Java Interface v1.0的使用方法
計算機程式設計 老師:蘇炳煌 助教:楊斯竣.
第14章 結構與其他資料形式.
陣列與結構.
北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
實習八 函式指標.
1757: Secret Chamber at Mount Rushmore
資料表示方法 資料儲存單位.
第四章 陣列、指標與參考 4-1 物件陣列 4-2 使用物件指標 4-3 this指標 4-4 new 與 delete
作業系統實習課(二) -Scheduler-Related System Calls-
Programming & Language Telling the computer what to do
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
Array(陣列) Anny
C語言程式設計 老師:謝孟諺 助教:楊斯竣.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
InputStreamReader Console Scanner
Presentation transcript:

第5章 基本輸入與輸出 5-1 程式的輸入與輸出 5-2 字元與字串的輸入 5-3 字元與字串的輸出 5-4 格式化資料的輸入 5-5 格式化資料的輸出 5-6 格式化的字串輸出

5-1 程式的輸入與輸出 5-1-1 C語言的基本輸入與輸出 5-1-2 字串的基礎

5-1 程式的輸入與輸出 電腦程式通常都需要和使用者互動,程式從使用者取得電腦周邊裝置輸入的資料,然後將執行結果在電腦輸出裝置顯示,最常使用的標準輸入裝置是鍵盤和滑鼠,標準輸出裝置是電腦螢幕,如下圖所示:

5-1-1 C語言的基本輸入與輸出 C語言的輸出和輸入操作是定義在<stdio.h>標頭檔的函數,屬於ASNI標準的C語言函式庫。 C語言的標準輸入與輸出屬於一種文字輸入與輸出模式,這是循序一行一行所組成的文字串流(Text Stream),每一行由新行字元(即‘\n’字元)結束,不論使用的硬體或作業系統,C語言的標準輸入與輸出都是採用這種模式。 例如:<stdio.h>標頭檔的函數在輸入時,會將使用者按下的Enter鍵和LF(Line Feed)換行字元,轉換成新行字元。

5-1-2 字串的基礎 C語言的字串是一種字元陣列,陣列是連續記憶體的變數集合,也就是由字元資料型態所組成的陣列結構。例如:宣告一個字元陣列來儲存字串,其宣告的方式,如下所示: char line[80]; 存取陣列元素是使用line[0]、line[1]~line[79]來存取,如下所示: line[i] = c; 在字元陣列的結束加上字元'\0'當作結束字元,如下所示: line[i] = '\0';

5-2 字元與字串的輸入 5-2-1 取得單一字元getchar() 5-2-2 取得單一字元getch() 5-2-3 取得字串gets() 5-2-4 使用getchar()讀取整個字串 5-2-5 將字元放回緩衝區ungetch()

5-2 字元與字串的輸入 在<stdio.h>標題檔的標準函式庫是從電腦標準輸入裝置,通常是指鍵盤,讀取字元和字串的函數,如下表所示:

5-2-1 取得單一字元getchar()-讀取一個字元 c = getchar(); 程式碼可以取得輸入字元的ASCII碼,其傳回值是整數int,如果有錯誤傳回EOF(End of File)檔案結束的常數值。 使用緩衝區讀取資料,需要等到使用者按下Enter鍵

5-2-1 取得單一字元getchar()-讀取多個字元 do { c = getchar(); printf("%c", c); } while ( c != 'x' ); 程式碼的do/while迴圈讀取輸入的字元,直到使用者按下「x」字元。

5-2-2 取得單一字元getch() 函數getch()也可以從標準輸入裝置讀取一個字元,不過它並沒有使用緩衝區,而且也不會回應,如下所示: c = getch(); 程式碼讀取一個字元,傳回值是輸入的字元,因為沒有使用緩衝區,輸入的字元馬上就送給程式處理,函數沒有回應,輸入的字元需自行使用程式碼輸出到螢幕顯示。

5-2-3 取得字串gets() 函數gets()可以從標準輸入裝置讀取整行輸入的文字內容,也就是一個字元陣列的字串,函數使用緩衝區讀取資料,需要等到使用者按下Enter鍵後,才會將字串送給程式讀取,如下所示: char line[80]; gets(line); 程式碼先宣告字元陣列line,大小是80個字元,然後以字元陣列為參數讀取字串內容,傳回值是字元陣列的指標,也就是字串內容。

5-2-4 使用getchar()讀取整個字串 使用迴圈配合getchar()函數即可摸擬gets()函數的功能,如下所示: for ( i = 0; (c=getchar()) !=EOF && c != '\n'; i++) line[i] = c; line[i] = '\0'; for迴圈的第2部分先呼叫getchar()函數取得一個字元(c=getchar()),然後檢查輸入字元是否為EOF或Enter鍵,在命令列提示字元按下Ctrl-Z組合鍵就是EOF,如果不是,就將字元存入陣列中,最後在字元陣列的最後加上'\0'的字串結束字元。

5-2-5 將字元放回緩衝區ungetch() 函數ungetch()可以將一個字元放回緩衝區,如下所示: 程式碼放回緩衝區一個字元1,表示下次從輸入裝置呼叫getch()函數讀取的字元就是1,成功時傳回參數,有錯誤傳回EOF。

5-3 字元與字串的輸出 5-3-1 輸出字元 5-3-2 輸出字串

5-3 字元與字串的輸出 在<stdio.h>標題檔的標準函式庫提供從電腦標準輸出裝置,通常是指螢幕,顯示字元和字串的函數,如下表所示:

5-3-1 輸出字元 函數putchar()是將字元輸出到標準輸出裝置,通常是輸出到螢幕顯示,如下所示: putchar(c); 程式碼可以將參數的字元c輸出到螢幕顯示。

5-3-2 輸出字串 如果是整個字串內容,即C語言的字元陣列,可以使用puts()函數將字串輸出到螢幕顯示,如下所示: puts(line); 程式碼可以將參數的字元陣列line輸出到螢幕顯示,在字串後會加上一個新行字元。

5-4 格式化資料的輸入 5-4-1 輸入字串 5-4-2 輸入整數值 5-4-3 輸入多種不同型態的資料 5-4-4 格式化資料輸入的修飾子

5-4 格式化資料的輸入-格式化輸入輸出函數 在C語言標準函式庫<stdio.h>標頭檔提供2個函數分別執行格式化的資料輸入和輸出,如下表所示:

5-4-1 輸入字串 scanf()函數讀取使用者輸入的字串,如下所示: scanf("%s", line); 函數參數一共有2個,第1個是格式字串,內含「%」符號開始的格式字元,%s表示輸入的資料格式是字串,第2個參數是儲存取得資料的變數,line是一個字元陣列。

5-4-2 輸入整數值 scanf()函數是以格式字元來判斷輸入的資料屬於那一種資料型態,scanf()函數一樣可以讀取數值資料,如下所示: scanf("%d", &cels); 函數參數一共有2個,第1個是格式字串,內含%d表示輸入的資料是整數,第2個參數使用「&」取址運算子取得變數的記憶體位址,&cels的意義是「將變數cels的位址傳入scanf()函數,以便取得輸入資料的變數值」,變數cels儲存的值就是使用者輸入的整數。

5-4-3 輸入多種不同型態的資料-說明 scanf()函數不只能夠輸入單一資料,在同一個函數還可以讀取多筆資料,而且是不同型態的資料,如下所示:

5-4-3 輸入多種不同型態的資料-格式字串 scanf()函數第1個參數的格式字串可以由3種字元組成,如下所示: 空白字元:在scanf()函數的格式字串可以使用空白字元,在此的空白字元是指Space或逸出字元的'\t'、'\n'等,這些字元並沒有用處,scanf()函數並不會處理這些字元。 非空白字元:如果在格式字串擁有非空白字元,此時使用者輸入的資料就需包含這些非空白字元。 格式字元和修飾子:在scanf()函數的格式字串一定需要格式字元,關於修飾子的說明請參閱下一節,一個格式字元可以對應一種資料型態。

5-4-3 輸入多種不同型態的資料-格式字元

5-4-4 格式化資料輸入的修飾子-說明 在格式字元的「%」符號之後,字元之前還可以加上修飾子,指定輸入資料的寬度和short、long的資料型態,其格式如下所示: %[*][寬度][h|l|L]格式字元

5-4-4 格式化資料輸入的修飾子-範例

5-5 格式化資料的輸出 5-5-1 printf()函數的基本使用 5-5-2 printf()函數的格式字元

5-5-1 printf()函數的基本使用 printf()函數的最基本使用是顯示文字值的字串,也就是一些訊息文字,只需配合逸出字元,即可編排輸出的字串內容,如下所示: printf("\"C/C++"); printf("程式設計"); printf("範例教本\"\n"); printf("\t陳會安 編著\n");

5-5-2 printf()函數的格式字元-說明 printf("a(d) = %d\n", a); printf("b(d) = %d c(d) = %d\n", b, c);

5-5-2 printf()函數的格式字元-格式字元1

5-5-2 printf()函數的格式字元-格式字元2

5-5-3 printf()函數的最小欄寬-說明 在printf()函數格式字元「%」符號後,字元前可以如同scanf()函數加上最小欄寬的整數值,輸出的變數值最少會顯示出指定欄寬的字元數,如果輸出的長度小於欄寬,則向右靠齊,然後在左邊填入空白字元,如下所示: printf("i(3d) = [%3d]\n", i); printf("i(7d) = [%7d]\n", i); printf("i(10d) = [%10d]\n", i); 上述程式碼的格式字串分別指定最小欄寬3、7和10來顯示整數變數i的值1023。

5-5-3 printf()函數的最小欄寬-範例

5-5-4 printf()函數的精確度-說明 printf()函數的精確度主要是使用在浮點數和字串剪裁,例如:%f、%e預設的精確度為小數點下6位數,printf()函數可以調整輸出資料所需的精確度,如下所示: printf("f(.0f) = [%.0f]\n", f); printf("f(.3f) = [%.3f]\n", f); printf("f(12.3f) = [%12.3f]\n", f); printf("f(12.5f) = [%12.5f]\n", f);

5-5-4 printf()函數的精確度-範例 變數f的值為3.1415926535898,如下表所示:

5-5-4 printf()函數的精確度-動態指定 如果需要動態指定輸出資料的精確度或最小欄寬,可以使用整數常數或變數值指定,在格式字串使用「*」星號代表精確度和最小欄寬,如下所示:

5-5-4 printf()函數的精確度-動態指定範例

5-5-5 printf()函數的旗標與長度修飾子-說明 printf()函數的格式字串不只可以指定最小寬度和精確度,在格式字元的「%」符號之後,字元之前還可以加上修飾子,指定輸入資料的寬度和short、long的資料型態,其格式如下所示: %[旗標修飾子][最小寬度][.精確度][長度修飾子]格式字元

5-5-5 printf()函數的旗標與長度修飾子-旗標修飾子範例

5-5-5 printf()函數的旗標與長度修飾子-長度修飾子範例

5-6 格式化的字串輸出 printf()函數的%s格式字串是用來輸出字串的字元陣列,配合格式字串的最小寬度、精確度和旗標修飾子,不只可以輸出靠左或靠右編排的文字內容,甚至可以剪裁字串,只輸出部分的字串內容。