CHAP4 字符串和格式化輸入輸出
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! What‘s your first name? 2 fengxian 3 fengxian,what‘s 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 字符串和格式化輸入輸出