之前我們學過如何於C程式內輸入數目字,但如要輸入字串,例如姓名,又要如何處理呢?
跟其他大部分電腦程言不一樣,C並沒有一個字串的變數數據類型(variable data type),C是使用字元(character)及變數陣列(array)方式處理的。
參考以下程式:
說明:
|
行 |
說明 |
|
4 |
宣告一個叫s的陣列變數,長度是10個字元,資料型態是字元(char)。留意,亦祇能是char,C程式並沒有string(字串)的資料型態的。字元(char)是一個字符而已,因此要用陣列方式貯存。 |
|
5 |
輸出 enter your name: |
|
6 |
讓使用者輸入字串,貯存於s這個變數內。留意,格式是”%s”,是字串。 |
那如何輸出已輸入的字串? 參考以下程式:
說明:
其實同樣使用printf()指令便可以,但留意,輸出的格式要”%s”,即字串(s 是string(字串)的簡稱))。
單純輸入輸出字串,祇是最簡單的功能。透過不同的字串處理函數,便可以對字串進行不同的處理,例如以下:
1. 取代整個字串(其實即是複製)
2. 取代字串中個別的字符
3. 搜尋字串的字符
4. 計算字符或字的數目
5. …..
同學有否發現,以上的功能,不就是文書處理中最常用的功能嗎?
其實同學可以透過曾學習的指令,操作以上字串的處理的,但由於字串處理屬常用的功能,已有人撰寫了不同的字串函數了,使用C程式時,先載入以下標頭檔便可使用:
#include <string.h>
以上標頭檔內,其中一個字串函數便是strcpy(),是用來取代字串用的。
語法如下:
strcpy(變數1,變數2(或字串));
例如: strcpy(s1,s2)
|
指令碼 |
說明 |
|
strcpy(s1,”peter”); |
把peter這字串(留意,必須用” “括起來)取代 s1的值。 |
|
strcpy(s1,s2); |
把s2的字串值取代s1的字串值。 |
----------------------------------------------------------------------------------------------------------------
[進階學習]
以上曾說過,C實際上是用字元(c)及陣列方式貯存字串的,那輸出時是否可以用字元格式(“%c”)呢?
參考以下程式:
由於字元(c)是單一個字元,因此不可能輸出整個字串的! 要使用字元格式輸出,便要自行把變數陣列內每一個字符都順序輸出便可以。如下:
留意,輸出的不祇是peter,而是多了5個字符,空格也是字符來的。因為開始時s的陣列變數用了10個字符位置(s[10]),所以輸出時亦會把空格也輸出了。
那有沒有辦法祇輸出真正的字母,而不輸出空格?
當然可以,你可以自行撰寫一段程式碼或使用他人已製作的函數便可以。其實C程式內已有人撰寫了,你使用”%s”便可以啦。
那以上使用迴圈這麼煩複輸出有甚麼用途呢?
如果要進行取代字母、搜尋字母等動作,便需要用到以上方式了! 不過,這些常用函數,已有人撰寫了。
沒有留言:
張貼留言