程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C Primer Plus(四)

C Primer Plus(四)

編輯:關於C語言

4.2字符串簡介

字符串就是一個或多個字符的序列,例如“Zing went”,但雙引號不是字符串的一部分。

4.2.1char數組類型和空字符
C沒有為字符串定義專門的變量類型,而是把它存儲在char數組中,字符串中字符存在在相鄰的存儲單元中,每個字符占用一個單元,數組由相鄰存儲單元組成。
數組的最後一個位置顯示字符\0,即空字符,C用它來標識記字符的結束。該字符的存在意味著數組的單元數至少比要存儲的字符數多1。

4.2.2使用字符串
%s告訴printf要打印一個字符串。您無需親自把空字符插入name數組中,scanf()會在讀取輸入時完成。
scanf()開始讀取輸入以後,會在遇到的第一個空白字符空格、制表符或者換行符處停止讀取。
‘x’和“x”不同,前者是基本類型,後者是派生類型。

4.2.3strlen()函數
sizeof以字節為單位給出數據大小,strlen()函數以字符為單位給出字符串的長度,不包括空字符。
char name[40],則sizeof name==40。char name[]="Mo" sizeof name==3;

 

4.3常量和C預處理器

#define NAME value 編譯時將會用value代替NAME,這稱為編譯時代入法。沒有使用分號是因為這是一種替代機制,而不是C的語句。

4.3.1const修飾符
C90:使用const關鍵字把一個變量聲明轉換成常量聲明。例const int MONTHS=12;

4.3.2系統定義的明顯常量
C頭文件limits.h和float.h分別提供有關整數類型和浮點類型的大小限制的詳細信息。例如INT_MAX,INT_MIN等。

 

4.4研究和利用printf()

4.4.1printf()函數
請求printf()打印變量的指令取決於變量的類型。使用%c%d這些轉換說明,它們指定了如何把數據轉換成可顯示的形式。
%%:打印一個百分號。%g根據數值不同自動選擇%f或%e。
printf()使用的是值,無論該值是變量、常量還是表達式。4.4.2printf()的轉換說明修飾符
-:左對齊
+:有符號的值若為正,則顯示帶加號的符號,若為負,則帶減號的符號。
空格:有符號的值為正,則顯示時帶前導空格;若為負,則帶減號符號。
#:使用轉換說明的可選形式,對於所有的浮點形式,保證了即使不跟任何數字,也打印一個小數點字符。
0:對於所有的數字格式,用前導零而不是空格填充字段寬度。
示例

1發1F 0x1f
**42** 42**-42**
**    6**  006**00006**  006*
/                    Authe/

4.4.3printf()的返回值
它返回所打印的字符的數目,但不包括空字符。如果有輸出錯誤,那麼printf()會返回一個負數。
4.4.4打印較長的字符串
如果在一個用雙引號引起來的字符串後面跟有另一個用雙引號引起來的字符串,而且兩者之間僅用空白字符分隔,那麼C會把該組合當作一個字符串來處理。
例: “young” "lovers"變成“younglovers”。

 

4.5研究和利用scanf()

如果使用scanf()來讀取前面討論過的某種基本變量類型的值,請在變量名之前加上一個&。
如果使用scanf()把一個字符串讀進一個字符數組中,請不要使用&。

4.5.1scanf()的格式字符

 

4.6printf()和scanf()的*修飾符

printf()中,如果您不想事先指定字段寬度,而是希望由程序來指定該值,那麼您可以在字段寬度部分使用*代替數字來達到目的,但是你也必須使用一個參數來告訴函數字段寬度應該是什麼。
例如printf("Weight = %*.*f\n",width,precision,weight);

scanf()中,當把*放在%和說明字母之間時,它使函數跳過相應的輸入項目。
例如scanf("%*d %*d %d",&n);    //跳過兩個整數,並把第三個整數復制給n。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved