字符串和字符數(shù)組的區(qū)別
6.3.5 字符數(shù)組的輸入輸出
在采用字符串方式后,字符數(shù)組的輸入輸出將變得簡單方便。
除了上述用字符串賦初值的辦法外,還可用printf函數(shù)和scanf函數(shù)一次性輸出輸入一個字符數(shù)組中的字符串,而不必使用循環(huán)語句逐個地輸入輸出每個字符。
【例6-12】字符數(shù)組的賦值與輸出。
注意在本例程序的printf函數(shù)中,使用的格式字符串為"%s",表示輸出的是一個字符串。而在輸出表列中給出數(shù)組名則可。不能寫為:
printf("%s",c[]);
【例6-13】向一個字符數(shù)組輸入字符串,然后輸出。
在本例程序中由于定義數(shù)組長度為15,因此輸入的字符串長度必須小于15,以留出一個字節(jié)用于存放字符串結(jié)束標志'\0'。應(yīng)該說明的是,對一個字符數(shù)組,如果不作初始化賦值,則必須說明數(shù)組長度。還應(yīng)該特別注意的是,當用scanf函數(shù)輸入字符串時,字符串中不能含有空格,否則將以空格作為串的結(jié)束符。
例如當輸入的字符串中含有空格時,運行情況為:
從輸出結(jié)果可以看出空格以后的字符都未能輸出。為了避免這種情況,可多設(shè)幾個字符數(shù)組分段存放含空格的串。
程序可改寫如下:
【例6-14】定義4個字符數(shù)組,輸入4個字符串,然后輸出。
本程序分別設(shè)了四個數(shù)組,輸入的一行字符的空格分段分別裝入四個數(shù)組。然后分別輸出這四個數(shù)組中的字符串。
在前面介紹過,scanf的各輸入項必須以地址方式出現(xiàn),如&a,&b等。但在前例中卻是以數(shù)組名方式出現(xiàn)的,這是為什么呢?
這是由于C語言規(guī)定,數(shù)組名就代表了該數(shù)組的首地址。整個數(shù)組是以首地址開頭的一塊連續(xù)的內(nèi)存單元。
如有字符數(shù)組charc[10],在內(nèi)存可表示如下圖所示。
設(shè)數(shù)組c的首地址為2000,也就是說c[0]的單元地址為2000。則數(shù)組名c就代表這個首地址。因此在c前面不能再加地址運算符&。如寫為scanf("%s",&c);則是錯誤的。在執(zhí)行函數(shù)printf("%s",c)時,按數(shù)組名c找到首地址,然后逐個輸出數(shù)組中各個字符直到遇到字符串終止標志'\0'為止。
免責聲明:以上內(nèi)容源自網(wǎng)絡(luò),版權(quán)歸原作者所有,如有侵犯您的原創(chuàng)版權(quán)請告知,我們將盡快刪除相關(guān)內(nèi)容。