字串
string
"字串" 與 '字元'
字元:一個字母或數字, e.g. 'a', '4'
字串:字元陣列, 最後以 '\0' 結束
char str[20] = "Initial value";
[0] | | | | [4] | | | | | [9] | | | | | [14] | | | | | [19] |
I | n | i | t | i | a | l | | v | a | l | u | e | \0 | | | | | | |
ASCII code 0 的字元
代表字串結束
'Q'
"Q"
Q |
Q | \0 |
""
\0 | |
空字串
陣列長度至少需14, 因為還要放\0
ASCII code
十進位 | 十六進位 | 字元 |
48 | 30 | 0 |
49 | 31 | 1 |
50 | 32 | 2 |
51 | 33 | 3 |
52 | 34 | 4 |
53 | 35 | 5 |
54 | 36 | 6 |
55 | 37 | 7 |
56 | 38 | 8 |
57 | 39 | 9 |
十進位 | 十六進位 | 字元 |
65 | 41 | A |
66 | 42 | B |
67 | 43 | C |
68 | 44 | D |
69 | 45 | E |
70 | 46 | F |
… | … | … |
88 | 58 | X |
89 | 59 | Y |
90 | 5A | Z |
十進位 | 十六進位 | 字元 |
97 | 61 | a |
98 | 62 | b |
99 | 63 | c |
100 | 64 | d |
101 | 65 | e |
102 | 66 | f |
… | … | … |
120 | 78 | x |
121 | 79 | y |
122 | 7A | z |
字元在電腦中以ASCII code 編碼儲存
數字字元轉整數
字串讀入輸出
不用加 &
讀到空格就補上\0, 結束字串
字串讀入輸出
讀到空格就結束
剩下的留在buffer裡
直接放入s2
字串讀入輸出
gets(s1) 一直讀到 \n 為止
字串讀入輸出
字串運算函式庫 string.h
strlen (string length)
取得字串長度, 不含\0
字串運算函式庫
字串運算函式庫 string.h
strcpy(s1, s2) 把 s2 copy 到 s1
字串運算函式庫 string.h
strncpy(s1, s2, n) 把 s2 前n個字 copy 到 s1, 蓋掉本來的內容
字串運算函式庫 string.h
strcat(s1, s2) 把 s2 接到 s1 後面
字串運算函式庫 string.h
strncat(s1, s2, n) 把 s2 前n個字接到 s1 後面
字串運算函式庫 string.h
s1, s2 陣列名稱是指標(位址), 不同陣列在不同位置
所以s1, s2不同
字串運算函式庫 string.h
strcmp(s1, s2) 回傳 0 🡺相同, 大於0🡺s1>s2, 小於0🡺s1<s2
字串運算函式庫 string.h
strncmp(s1, s2, n) 比較前n個字
字串的錯誤使用例
k303: Hello, XXX!
輸入說明:
輸入一個字串,代表要問好對象的名字。
輸出說明:
若對方的名字為 XXX,則輸出「Hello, XXX!」(不含「」,請注意中間有空一格)。
輸入範例1:
輸入1:
Mary
輸出1:
Hello, Mary!
輸入範例2:
輸入2:
Kitty
輸出2:
Hello, Kitty!
k322: 例背如流
輸入說明:
輸入一個字串。
輸出說明:
將輸入的字串依相反的字元順序輸出。
輸入範例1:
輸入1:
Hello
輸出1:
olleH
輸入範例2:
輸入2:
World
輸出2:
dlroW
k323: 迴文
輸入說明:
輸入一個字串,以判斷它是不是一個迴文。
輸出說明:
如果輸入的文字是迴文,請輸出 YES,否則輸出 NO。(判斷時大小寫視為不同文字)
輸入範例1:
輸入1:
ABBA
輸出1:
YES
輸入範例2:
輸入2:
ABCD
輸出2:
NO
k324: 無限猴子定理
輸入說明:
輸入兩個字串,第一個是指定的文字,第二個是猴子輸入的文字。
輸出說明:
如果猴子輸入的文字去掉某幾個(包含0個)字元之後,可以和指定的文字完全相同,則輸出 YES,否則輸出 NO。(註:大小寫視為不同字元)
輸入範例1:
輸入1:
ABC AXBXC
輸出1:
YES
輸入範例2:
輸入2:
YES YyesS
輸出2:
NO