Download presentation
Presentation is loading. Please wait.
1
字串 第10章 part I 8/30/2019
2
大綱 宣告與初始化方 式 字串的長度 字串拷貝, 連結與 複製 8/30/2019
3
10.1 宣告與初始化方式 字串(string)定義 字串表示方法 宣告字串的方法 字串指標 gets()---取得字串
puts()--字串的輸出 8/30/2019
4
字串(string)定義 char string [100]; char *string;
字元串列 (character list)—由字元(char) 組成的一連 串資料 字串是個字元陣列, 陣列的基本性質都能運用在 字串 例子: char string [100]; char *string; 8/30/2019
5
字串表示方法 字串的結尾是 ″\0″ , 這表示字串到此停止 所以, 下列字串 ″Hello World″ 表示 \0 H e l l o
字串的結尾是 ″\0″ , 這表示字串到此停止 所以, 下列字串 ″Hello World″ 表示 H e l l o W o r l d \0 8/30/2019
6
宣告字串的方法 char str1[10]={‘h’, ‘e’, ‘l’, ‘l’, ‘o’, ‘\0’}; char str1[80];
字串初始化 char str1[10]={‘h’, ‘e’, ‘l’, ‘l’, ‘o’, ‘\0’}; char str1[80]; char str1[]= ″hello″; char *str1 = ″hello″; 8/30/2019
7
字串指標 P o i n t e r v w \0 msg3 msg2 N u l a r y s i z e \0
* 字串名稱亦是一個指標 P o i n t e r v w \0 msg2 N u l a r y s i z e \0 8/30/2019
8
字串指標 char msg2[] = "Null array size"; char *msg3 = "Pointer view";
……………….. …………………. msg3 = msg2; 執行這行後指標有何改變? 8/30/2019
9
gets()---取得字串 gets(msg4); char msg4[80];
定義在 stdio.h 標頭檔的函式, 用來讀取來自鍵盤的 字串 使用前須先宣告一個足夠的字串空間 char msg4[80]; …………. ………….. printf("\n\n Enter a string : "); gets(msg4); printf(" msg4 : %s\n",msg4); 8/30/2019
10
puts()--字串的輸出 puts("Your name is: "); char lastname[20];
char firstname[20]; ………………. printf("please input your first name: "); gets(firstname); puts("Your name is: "); printf("%s ", firstname); 8/30/2019
11
上機練習 p10-1.c: 宣告幾種字串及初值, 再將其輸出(%s格式)
P10-2.c: 以學過的 sizeof() 檢查以下字串的長度. "Hello Kitty" P10-3.c: 運用 gets() 函數讓users 可以輸入至少30個 字元的字串, 再以 puts() 將其結果輸出 8/30/2019
12
上機練習 P10-4..c:字串搜尋. 搜尋下表某一個字串,並找到 出現這些字串所有位置與次數
At the first God made the heaven and the earth. And the earth was waste and without form; and it was dark on the face of the deep: and the Spirit of God was moving on the face of the waters. 8/30/2019
13
上機練習 演算法 設定字串 str[] 輸出字串 str[] 輸入欲搜尋之字串 find[] 計算欲搜尋之字串長度
利用迴圈取出原字串的每個字元 自str[] 字串取出的字元與搜尋字串的第一個字元 比對,若字元相等, 則可與搜尋字串繼續比對, 否則 跳到原字串的下一個字元比對 8/30/2019
14
10.2 字串的長度 字串長度如何計算? 8/30/2019
15
size_t strlen(const char*);
字串長度如何計算? size_t strlen(const char*); 函式 strlen() 原型 我們解釋一下上面的函式: 當函式 strlen() 接收到字 串參數時, 它會從該參數所指的位址開始, 一直遇到 空字元(\0)為止, 計算其間共有多少字元, 這值即是 字串的長度 此一函式定義於 string.h 標頭檔中 8/30/2019
16
舉例 s t r i n g 2 \0 以下的字串, 如以strlen() 處理後其長度各為? str1 s t r i n g 1 L e
8/30/2019
17
上機練習 演算法 設定一個函式名稱為myStrlen() 呼叫將要計算的字串的函式 myStrlen()
(P10-5..c)是否可以自己寫一個程式計算字串長度? 演算法 設定一個函式名稱為myStrlen() 呼叫將要計算的字串的函式 myStrlen() 當函式 myStrlen() 接收到字串參數時, 它會從該 參數所指的位址開始, 一直遇到空字元(\0)為止, 計算其間共有多少字元(以一for 迴圈處理) 8/30/2019
18
10.3 字串拷貝, 連結與複製 字串拷貝—strcpy() 8/30/2019
19
字串拷貝—strcpy() char *strcpy(char *dest, const char *source);
字串拷貝主要的目的是想要形成另外一個完整的字 串 有一個指令,叫做strcpy(string copy),在複製字串 之前,我們要先準備一個陣列 char *strcpy(char *dest, const char *source); 8/30/2019
20
字串拷貝 下面的例子(strcpy.c)說明msg[] 字串拷貝至 dest[] 字串
char msg[] = "String copy"; char dest[30] = "garbage"; ……………. strcpy(dest,msg); 8/30/2019
21
字串拷貝—strncpy() char *strncpy(char *dest, const char *source,size_t n);
8/30/2019
22
字串拷貝 下面的例子(strcpy.c)說明將 msg[] 字串的前面9個字 元拷貝至 dest[] 字串
char msg[] = "String copy"; char dest[30] = "garbage"; ………………………… ……………………….. strncpy(dest, msg, 9); 8/30/2019
23
上機練習 演算法 字元陣列宣告 字元指標宣告 顯示字串內容 字串複製的迴圈
(P10-6..c)宣告2個指標變數分別指向字元陣列的字串和 字串常數, 然後使用指標運算來複製字串內容 演算法 字元陣列宣告 字元指標宣告 顯示字串內容 字串複製的迴圈 8/30/2019
Similar presentations