1 of 21

字串

string

2 of 21

"字串" 與 '字元'

字元:一個字母或數字, 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

3 of 21

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 編碼儲存

4 of 21

數字字元轉整數

5 of 21

字串讀入輸出

不用加 &

讀到空格就補上\0, 結束字串

6 of 21

字串讀入輸出

讀到空格就結束

剩下的留在buffer裡

直接放入s2

7 of 21

字串讀入輸出

gets(s1) 一直讀到 \n 為止

8 of 21

字串讀入輸出

9 of 21

字串運算函式庫 string.h

strlen (string length)

取得字串長度, 不含\0

字串運算函式庫

10 of 21

字串運算函式庫 string.h

strcpy(s1, s2) 把 s2 copy 到 s1

11 of 21

字串運算函式庫 string.h

strncpy(s1, s2, n) 把 s2 前n個字 copy 到 s1, 蓋掉本來的內容

12 of 21

字串運算函式庫 string.h

strcat(s1, s2) 把 s2 接到 s1 後面

13 of 21

字串運算函式庫 string.h

strncat(s1, s2, n) 把 s2 前n個字接到 s1 後面

14 of 21

字串運算函式庫 string.h

s1, s2 陣列名稱是指標(位址), 不同陣列在不同位置

所以s1, s2不同

15 of 21

字串運算函式庫 string.h

strcmp(s1, s2) 回傳 0 🡺相同, 大於0🡺s1>s2, 小於0🡺s1<s2

16 of 21

字串運算函式庫 string.h

strncmp(s1, s2, n) 比較前n個字

17 of 21

字串的錯誤使用例

18 of 21

k303: Hello, XXX!

輸入說明:

輸入一個字串,代表要問好對象的名字。

輸出說明:

若對方的名字為 XXX,則輸出「Hello, XXX!」(不含「」,請注意中間有空一格)。

輸入範例1:

輸入1:

Mary

輸出1:

Hello, Mary!

輸入範例2:

輸入2:

Kitty

輸出2:

Hello, Kitty!

19 of 21

k322: 例背如流

輸入說明:

輸入一個字串。

輸出說明:

將輸入的字串依相反的字元順序輸出。

輸入範例1:

輸入1:

Hello

輸出1:

olleH

輸入範例2:

輸入2:

World

輸出2:

dlroW

20 of 21

k323: 迴文

輸入說明:

輸入一個字串,以判斷它是不是一個迴文。

輸出說明:

如果輸入的文字是迴文,請輸出 YES,否則輸出 NO。(判斷時大小寫視為不同文字)

輸入範例1:

輸入1:

ABBA

輸出1:

YES

輸入範例2:

輸入2:

ABCD

輸出2:

NO

21 of 21

k324: 無限猴子定理

輸入說明:

輸入兩個字串,第一個是指定的文字,第二個是猴子輸入的文字。

輸出說明:

如果猴子輸入的文字去掉某幾個(包含0個)字元之後,可以和指定的文字完全相同,則輸出 YES,否則輸出 NO。(註:大小寫視為不同字元)

輸入範例1:

輸入1:

ABC AXBXC

輸出1:

YES

輸入範例2:

輸入2:

YES YyesS

輸出2:

NO