Presentation is loading. Please wait.

Presentation is loading. Please wait.

第4章 字串及資料的輸入/輸出格式.

Similar presentations


Presentation on theme: "第4章 字串及資料的輸入/輸出格式."— Presentation transcript:

1 第4章 字串及資料的輸入/輸出格式

2 本章的範例之一 範例4.1 talkback.c 使用陣列來處理字串。 使用%s來處理輸出、輸入字串。
使用scanf()函數時,前面必需加上一個&符號。 使用C的前置處理程式來定義DENSITY符號常數,並以此表示數值62.4。 使用C的strlen()函數來取得字串的長度。

3 字串的介紹 字串是由一個或多個字元所形成的。 “Zing went the strings of my heart !”
雙引號非字串的一部份,它是用來告訴編 譯程式:雙引號裡的內容是一個字串。

4 Char型態的陣列和NULL字元 Z i n g w e n t t h e s t r i n g s o f m y ! \0
每一格為一個位元組 Null字元 在儲存陣列字串的陣列當中,必需保留一個位置,用來儲存NULL,所以,陣列長度至少要比它所儲存的字串長度多一個字元。

5 什麼是陣列 可以被想像成一連串的記憶體位置,陣列是由某種特定型態的資料所組成的序列。 char name[40];

6 如何使用字串1 範例4.2 praise1.c 字串的輸入與輸出

7 如何使用字串2 當它讀到一個空的資料、跳格符號、或換行符號,就會停止讀取。 scanf()使用%S時,表示讀取一個字串。

8 strlen()知道什麼時候要停止計算字串長度
範例4.3 praise2.c 代表結束的null字元 5個字元 沒有功用的空間 T u f f y \0 strlen()知道什麼時候要停止計算字串長度

9 常數及C的前置處理程式 假設程式中有許多地方都使用同一常數,而現在必須更改常數的值(例如稅率),此時只要更改符號常數的定義即可,並不需要一一修改程式中使用了此常數的所有敘述。 範例4.4 pizza.c

10 #define也可以用在字元及字串方面的函數:字元會配合單引號使用,而字串配合雙引號來使用。
符號常數名稱的命名規則和變數名稱的命名規則是一樣的。

11 const 修飾符號 也可利用const產生符號常數 const int MONTHS = 12; 如此一來,MONTHS會變成一個唯讀的數值,您可以輸出MONYHS,或在運算式中使用它,不過就是不能改變MONTHS的值。

12 符號常數 C的limits.h和float.h標頭檔,分別提供關於整數型態和浮點數型態的大小詳細限制,這些檔案定義了許多實作上會運用到的符號常數。 表4.1為在limits.h中所定義的一些常數。 表4.2為float.h中所定義的一些常數。

13 探索及使用printf()和scanf()
printf()和scanf()函數可用來跟程式溝通,它們稱為輸入/輸出函數(Input/Output function),或簡稱I/O函數(I/O function)。

14 printf()函數 使用printf()來輸出變數時,必須傳給printf()一個變數型態。例如整數使用%d,輸出字元時則使用%c。
表4.3 轉換規格符號及其輸出結果。

15 使用printf() printf("you look great in %s\n",color);

16 在printf()中轉換規格符號的修飾字元
表4.4 、4.5列出可使用的修飾字元。 常用的有以下幾種: 數字:例如%4d 要顯示的數字或字串長度限制。 旗標:例如%-20s字串靠左對齊。 l : 例如:%ld,可表示long int。

17 scanf()函數 Scanf()可將輸入的字串轉成許多不同的形式,例如整數、浮點數、字元或字串,他所作的工作剛好和printf()相反,printf()是把整數、浮點數、字元和字串都轉成文字,然後再輸出到螢幕上。 使用scanf()讀取資料,並指定給變數時,只要再變數名稱前加上一個&即可。

18 scanf()函數 範例4.14 input.c scanf()函數使用空白符號(換行字元、跳格字元、和空白字元)來區分輸入資料。

19 格式串列中固定的字元 如果不小心將逗號放在兩個轉換符號中間,如下: scanf(“%d,%d”,&n,&m);

20 printf()的修飾字元* 假設不想立刻在程式裡設定輸入的最大長度,而是要稍後再作設定的話,此時可在轉換符號裡使用*,不過還是必須以傳參數的方式告訴printf()最大的輸入長度是多少;也就是說,當使用%*d時,後面的參數必須指定*的數值和d所需要的數值,這種方式也可用於浮點數,以這種方式可設定其精確度,如範例4.15。

21 Scanf()的修飾字元* 在scanf()中使用*效果就不同了;在%和轉換字母間加入*,將會造成函數洛過所對應的輸入資料,如範例4.16所示。


Download ppt "第4章 字串及資料的輸入/輸出格式."

Similar presentations


Ads by Google