正文 第21章 數組3(1 / 3)

在前麵介紹字符串常量時,已說明字符串總是以“\0”作為結束符。因此當把一個字符串常量存入一個數組時,也把結束符“\0”存入數組,並以此作為該字符串是否結束的標誌。有了“\0”標誌,就不必再用字符數組的長度來判斷字符串的長度了,“\0”也稱字符串結束標誌符。

C語言還允許使用字符串的方式對數組作初始化賦值。例如:

charstr1[]={H,e,l,l,o,,C,!};

可寫為:

charstr2[]={"HelloC!"};

還可以寫為:

charstr3[]="HelloC!";

需要注意的是,用字符串方式賦值比用字符逐個賦值要多占一個字節,用於存放字符串結束標誌“\0”,即數組str1的長度是8,而數組str2和數組str3的長度都是9。

數組str2和數組str3中的“\0”是由C語言編譯係統自動加上的。由於采用了“\0”標誌,所以在用字符串賦初值時一般無需指定數組的長度,而由係統自行處理。在采用字符串方式後,字符數組的輸入輸出將變得簡單方便。

除了上述用字符串賦初值的辦法外,還可用printf函數和scanf函數一次性輸入輸出一個字符數組中的字符串,而不必使用循環語句逐個地輸入輸出每個字符。

[例77]由鍵盤輸入一串字符串並輸出。

#include

voidmain()

{charstring[100];

printf("Inputastring,length

voidmain()

{charstring[]="Niceweather!";

puts(string);

puts("Isn’tit?");

程序運行結果:

Niceweather!

Isn’tit?

從程序中可以看出,puts函數的參數可以是字符數組名,也可以是字符串常量。與printf函數不同,puts函數顯示字符串時自動在其後添加一個換行符,故輸出顯示有兩行。puts函數完全可以由printf函數取代,當需要按一定格式輸出時,則通常使用printf函數。

2.字符串輸入函數gets

格式:gets(字符數組名)

功能:從標準輸入設備(鍵盤)獲得一個字符串。

[例79]字符串輸入。

#include

voidmain()

charname[30];

puts("Hi,what’syourname?");

gets(name);

printf("Ah!%s,nicename!\n",name);

程序運行結果:

Hi,what’syourname?

JohnSmith

Ah!JohnSmith,nicename!

可以看出,輸入的字符串沒有固定的長度,所以gets函數需要知道輸入何時結束。解決辦法是gets函數讀取字符串直到遇到第一個換行符“\n”時結束,並將“\n”丟棄,用“\0”取而代之。