1. 程式人生 > >CHAP4 字符串和格式化輸入輸出

CHAP4 字符串和格式化輸入輸出

打印 cte 打印字符 處理器 處理 標記 result info 字符數

2019-02-12 16:05:42

p72-p101

 1 //talkback.c--演示與用戶交互
 2 #include <stdio.h>
 3 #include <string.h> //提供strlen()函數的原型
 4 #define DENSITY 62.4//用C預處理器定義字符常量——人體密度
 5 
 6 int main()
 7 {
 8     int size,letters;
 9     float weight,volume;
10     char name[40];//用數組儲存字符串
11 
12     printf("Hi! What‘s your first name?\n
"); 13 scanf("%s",name); //用%s轉換說明來處理字符串的輸入和輸出 14 printf("%s,what‘s your weight in pounds?\n",name);//name無&前綴,name和&weight都是地址 15 scanf("%f",&weight); 16 17 //對象大小,計算體積 18 size=sizeof name; 19 volume=weight/DENSITY; 20 letters=strlen(name); 21 printf("Hi!%s,your volume is %f cubic feet.\n
",name,volume); 22 printf("Also,your first name has %d letters\n",letters); 23 printf("and we have %d bytes to store it.\n",size); 24 25 return 0; 26 }

1、一般而言,C把函數庫中相關的函數歸為一類,並為每類函數提供一個頭文件。

ex,printf ( )和scanf ( ) 都隸屬標準輸入和輸出函數,使用stdio.h 頭文件。string.h頭文件包含了strlen ( )函數和其他一些與字符串相關的函數(如拷貝字符串的函數和字符串查找函數)

2、char 類型數組——C語言沒有專門用來儲存字符串的變量類型,字符串都被儲存在char類型的數組中。即用數組存儲字符串。

C語言用 \0 (空字符 null character) 標記字符串的結束,空字符是非打印字符,ASCII碼值為0。故數組的容量至少比待存儲字符串的字符數多1.

聲明一個數組和聲明一個變量:

技術分享圖片

3、用 %s 轉換說明來處理字符串的輸入和輸出 用%d轉換說明來處理 int 的輸入和輸出 用 %f 轉換說明來處理 float 的輸入和輸出

一般而言,根據%s轉換說明,scanf ( ) 只會讀取字符串中的第一個單詞,而非一整句。

4、用strlen ( ) 得到的是字符串中的字符數(包括空格和標點符號)

然而,sizeof運算符給出的數更大,因為他把字符串末尾不可見的空字符也計算在內。

運行結果:

1 Hi! Whats your first name?
2 fengxian
3 fengxian,whats your weight in pounds?
4 120
5 Hi!fengxian,your volume is 1.923077 cubic feet.
6 Also,your first name has 8 letters
7 and we have 40 bytes to store it.

又如:

技術分享圖片

results:

技術分享圖片

5、CHAP 2 中介紹預處理器如何使用# include 包含其他文件的信息, 預處理器也可用來定義常量。

#define PI 3.14159

大寫常量提高程序的可讀性 編譯程序時完成替換 #define指令還可以定義字符和字符串常量

一言以蔽之:符號常量後面的內容被用來替換符號常量

6、const 限定符:可使用可打印不可更改,比#define 更靈活,CHAP12中討論。

7、明示常量:符號常量。C頭文件limit.h 和float.h 分別提供了與整數類型和浮點類型大小限制相關的詳細i信息。

#define INT_MAX +32767 #define INT_MIN -32768

8、printf ( ) 函數是輸出函數 ,scanf ( ) 函數是輸入函數。工作原理幾乎相同,都使用格式字符串和參數列表。

技術分享圖片

請求printf ( ) 函數打印數據的指令與待打印數據的類型 要 相匹配。

如:打印整數時使用%d,打印字符時使用%c,打印浮點型數據使用%f,打印字符串使用%s——指定了如何把數據轉化成可顯示的形式

控制輸出格式:轉換說明修飾符:P83 + printf ( ) 中的標記:P84

轉換說明(亦稱翻譯說明)的意義( 本質理解):把二進制格式儲存在計算機中的值轉換成一系列字符(字符串)以便於顯示。

9、 大部分C函數都有一個返回值,這是函數計算並返回給主調函數的值。printf ( )函數也不例外。

printf 的返回值:返回打印字符的個數。如果有輸出錯誤,返回一個負值。 返回值可以像其他值一樣使用:賦給變量、用於計算、作為參數傳遞。

10、scanf ( )

格式字符串:表明字符輸入流的目標數據類型。

參數列表(和printf ( ) 的主要區別):使用指向變量的指針。

--------------------------------------------------------------------------------

技術分享圖片

11、C語言還有其他的輸入函數,如getchar ( ) 和fgets ( ) 更適合處理一些特殊情況——如讀取單個字符或包含空格的字符串。

12、scanf ( )函數返回成功讀取的項數。

13、使用足夠大的固定字段寬度可以讓輸出整齊美觀。(如想把數據打印成列時)

CHAP4 字符串和格式化輸入輸出