回高一首頁〕〔回上一頁

字串說明:

字串,字串就是一段文字,我們可以用一對雙引號 " 把該段文字夾起來。而要在 scanf 及 printf 讀入及印出一個字串則是使用 %s。由於 C 語言中並沒有字串的變數型態,而是用字元的陣列來儲存一個字串,

字串輸入與輸出

例如:

char s[20], t[20]="LSSH";

scanf("%s", s);

printf("%s", s);

上面的例子宣告了 s 是一個字串,長度為 20 個字元。我們在宣告字串的時候要注意它的長度,以免位數不夠造成程式錯誤。事實上,每個字串後面都有一個 '\0' 的字元,也就是說,上面的 "LSSH" 字串,事實上總共用了 5 Bytes,這一點要特別注意。另外,由於 s 本身就是這個字元陣列的位址,所以在 scanf 裡我們不需要加上 & 符號。

gets() 與 puts():

不過,用 scanf 讀取字串時,遇到空白字元便會結束,例如輸入 "Hello! LSSH!",則讀進來的字串只有 "Hello!" 而已。為了避免這個情況,我們再介紹兩個函數 gets 、puts (也是定義在 stdio.h),gets 的功能是讀入字串,而 puts 則是印出字串:

gets(s);

puts(s);

上面要注意的是,如果是使用 gets,會連換行一起讀進來,也就是字串後面會多一個 '\n' 字元。也由於 C 語言中的字串是字元的陣列,所以如果我們要知道第 N 個字元,就是用 s[N-1]的方式取得。

相關字串函數:

不過,如果我們要做字串的比對、字串串接、字串長度等功能,沒有運算子可以使用,故必須使用函數來處理。和字串相關的函數都是定義在 string.h 中,常用的字串函數如下:

strcpy(s1, s2)    將 s2 的內容複製到 s1

strcmp(s1, s2)    比較 s1、s2 的內容,如果相等傳回 0

strcat(s1, s2)    將 s2 串接到 s1 後面

strstr(s1, s2)    傳回 s2 字串在 s1字串中第一次出現的位置

strlen(s1)    傳回 s1 的長度(不含 '\0' 字元)

strrev(s1)    將 s1 字串倒置