版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、15.4.1 5.4.1 字符串與字符數(shù)組字符串與字符數(shù)組5.4.2 5.4.2 字符數(shù)組的定義與初始化字符數(shù)組的定義與初始化5.4.3 5.4.3 字符數(shù)組的引用字符數(shù)組的引用5.4.4 5.4.4 字符串輸出和輸入字符串輸出和輸入5.4.5 5.4.5 字符數(shù)組應(yīng)用舉例字符數(shù)組應(yīng)用舉例void main() int c5=6,-30,45,0,12;/ int c5;for(int i=0;i5;i+) scanf(%d,&ci);for( i=0;i5;i+) printf(%dt,ci);運行結(jié)果:1 2 3 4 51 2 3 4 5void main() char c5=a,b,c,
2、d,e ;/ char c5;for(int i=0;i5;i+) scanf(%c,&ci);for( i=0;i5;i+) printf(%ct,ci);運行結(jié)果:abcdea b c d e4字符串是一個或多個字符的序列。字符串是一個或多個字符的序列。下面是一個字符串的例子:下面是一個字符串的例子: How are you C語言中沒有為字符串定義專門的變量類型,而是語言中沒有為字符串定義專門的變量類型,而是把它存儲在字符數(shù)組。雙引號中的字符加上把它存儲在字符數(shù)組。雙引號中的字符加上字符字符串結(jié)束標(biāo)志串結(jié)束標(biāo)志0,作為一個字符串被存儲在相鄰,作為一個字符串被存儲在相鄰的內(nèi)存單元中,每個字
3、符占用一個單元。的內(nèi)存單元中,每個字符占用一個單元。 不是字符串的一部分不是字符串的一部分Howareyou0字符串就是以空字符字符串就是以空字符0結(jié)尾的字符數(shù)組。結(jié)尾的字符數(shù)組。 5 0代表代表ASCII碼為碼為0的字符的字符從從ASCII碼表可以查到,碼表可以查到,ASCII碼為碼為0的字符不是一個可以顯示的字符,而是的字符不是一個可以顯示的字符,而是一個一個“空操作符空操作符”,即它什么也不做,即它什么也不做用它作為字符串結(jié)束標(biāo)志不會產(chǎn)生附加用它作為字符串結(jié)束標(biāo)志不會產(chǎn)生附加的操作或增加有效字符,只起一個供辨的操作或增加有效字符,只起一個供辨別的標(biāo)志別的標(biāo)志6 字符數(shù)組就是數(shù)據(jù)類型為字符
4、型的數(shù)組,每個元字符數(shù)組就是數(shù)據(jù)類型為字符型的數(shù)組,每個元素可以用來存放一個字符。如果字符數(shù)組包含了素可以用來存放一個字符。如果字符數(shù)組包含了空字符空字符0,那么字符數(shù)組的內(nèi)容就構(gòu)成一個字,那么字符數(shù)組的內(nèi)容就構(gòu)成一個字符串。但如果字符數(shù)組中沒有空字符符串。但如果字符數(shù)組中沒有空字符0,則不,則不能表示一個字符串。能表示一個字符串。 Helloev er y one.0既是字符數(shù)組,又是字符串。既是字符數(shù)組,又是字符串。He lloeveryone.是字符數(shù)組,但不是字符串。是字符數(shù)組,但不是字符串。7字符數(shù)組定義字符數(shù)組定義形式與其他類型數(shù)組相同。形式與其他類型數(shù)組相同。例:例:char a
5、10; 定義定義a為為含有含有10個元素的字符個元素的字符數(shù)組數(shù)組 char d510; 定義定義d為為510(5行行10列列)的的二維字符數(shù)組二維字符數(shù)組a0=I; a1= ; a2=a; a3=m;a4= ; a5=h; a6=a; a7=p; a8=p; a9=y;Iamhappya0a1a2a3a4a5a6a7a8a98字符數(shù)組初始化字符數(shù)組初始化 字符數(shù)組也允許在定義時作初始化賦值。例:字符數(shù)組也允許在定義時作初始化賦值。例:char str1 10=p, r, o, g, r, a,m;program 0 0 0str10 1 2 3 4 5 6 7 8 9當(dāng)對全體元素賦初值時也可
6、以省去長度說明。例:當(dāng)對全體元素賦初值時也可以省去長度說明。例:char str2 =p, r, o, g, r, a,m;programstr20 1 2 3 4 5 6長度自動指定為長度自動指定為79加空字符的字符數(shù)組初始化。例:加空字符的字符數(shù)組初始化。例:char str3= p, r, o, g, r, a,m , 0;program 0str30 1 2 3 4 5 6 7長度指定為長度指定為8 字符數(shù)組還允許字符數(shù)組還允許用字符串常量直接進(jìn)行初始化用字符串常量直接進(jìn)行初始化。要。要確保數(shù)組元素個數(shù)比字符串長度至少多確保數(shù)組元素個數(shù)比字符串長度至少多1個(多出個(多出來的來的1個元
7、素用于存放空字符個元素用于存放空字符0) char str450=You can see it.;10 char c=”I am happy”;可寫成可寫成char c=”I am happy”;相當(dāng)于相當(dāng)于char c11=”I am happy”;c0c1c2c3c4c5c6c7c8c9c10I amhappy011 用字符串常量進(jìn)行初始化時如果省略數(shù)組大小,用字符串常量進(jìn)行初始化時如果省略數(shù)組大小,讓編譯器決定數(shù)組大小是很方便的。例:讓編譯器決定數(shù)組大小是很方便的。例: char str5=program; program 0str10 1 2 3 4 5 6 7長度自動指定長度自動指定
8、為為8,不是不是7 注意:注意:不能用賦值語句將一個字符串常量或字符數(shù)不能用賦值語句將一個字符串常量或字符數(shù)組直接賦給一個字符數(shù)組。例:組直接賦給一個字符數(shù)組。例: char str110, str210=program; str1=program; str1=str2; 合法合法不合法不合法12 字符數(shù)組的引用字符數(shù)組的引用和其他類型數(shù)組一樣,通過數(shù)組和其他類型數(shù)組一樣,通過數(shù)組名加上用方括號名加上用方括號“”括起來的下標(biāo)表達(dá)式來引用括起來的下標(biāo)表達(dá)式來引用數(shù)組中的各個元素。數(shù)組中的各個元素。char c5=a,b,c,d,e;/ char c5;for(int i=0;i5;i+) sca
9、nf(%c,&ci);for( i=0;i5;i+) printf(%ct,ci);13 字符數(shù)組的引用字符數(shù)組的引用和其他類型數(shù)組一樣,通過數(shù)組和其他類型數(shù)組一樣,通過數(shù)組名加上用方括號名加上用方括號“”括起來的下標(biāo)表達(dá)式來引用括起來的下標(biāo)表達(dá)式來引用數(shù)組中的各個元素。數(shù)組中的各個元素。void main() char c5=abcd;for( int i=0;i4;i+) printf(%c,ci);C是一個字符串,所以上面兩語句可改為:是一個字符串,所以上面兩語句可改為:printf(%s,c);14例:將全部是小寫字母的字符串全部轉(zhuǎn)換成大寫例:將全部是小寫字母的字符串全部轉(zhuǎn)換成大寫 i
10、nt i=0; char str=program; while(stri!=0) stri= stri-32; printf(%c,stri); i+; 判斷字符串是否結(jié)束判斷字符串是否結(jié)束小寫字母轉(zhuǎn)換成大寫小寫字母轉(zhuǎn)換成大寫151.1.字符串輸出字符串輸出(1)printf()(1)printf()函數(shù)函數(shù)u字符串常量可以直接作為字符串常量可以直接作為printf()函數(shù)的參數(shù),函數(shù)的參數(shù),程序中用這種方式顯示提示信息便于人機(jī)交互程序中用這種方式顯示提示信息便于人機(jī)交互。 例:例:printf(“Please input a number:”);u還可以使用帶還可以使用帶%s格式控制符的格式
11、控制符的printf()函數(shù),輸函數(shù),輸出一個字符串,但需要出一個字符串,但需要一個字符串地址一個字符串地址如字符數(shù)如字符數(shù)組名作為對應(yīng)的輸出項。組名作為對應(yīng)的輸出項。 例:例:printf(”%s”,c); 字符數(shù)組名字符數(shù)組名 &c不合法不合法 16 char string=string literal; printf(%sn,string); printf(%sn,&string3); 字符數(shù)組名字符數(shù)組名 數(shù)組元素的地址數(shù)組元素的地址 輸出輸出: :string literaling literal注意:注意:輸出字符不包括結(jié)束符輸出字符不包括結(jié)束符0 char c10=”boy0gi
12、rl0”;printf(”%s”,c);boy 17char c5=a,b,c,d;printf(%s,c);輸出輸出: :abcdchar c5=a,b,c,d,e;printf(%s,c);輸出輸出: :abcde后面還有亂碼后面還有亂碼18(2)puts()(2)puts()函數(shù)函數(shù)u只需要給出字符串地址作為參數(shù)只需要給出字符串地址作為參數(shù)u作用作用是將一個字符串輸出到終端是將一個字符串輸出到終端u輸出字符串時自動在其后添加一個換行符輸出字符串時自動在其后添加一個換行符u在遇到空字符在遇到空字符0 時才會停止輸出時才會停止輸出 char string=string literal; pu
13、ts(This is an example); puts(string); puts(&string3); This is an examplestring literaling literal輸出:輸出: char c10=”boy0girl0”;puts(c);boy 19printf(%sn,string); puts(string);兩條語句效果一樣兩條語句效果一樣 printf()函數(shù)與函數(shù)與puts()函數(shù)主要區(qū)別在于:函數(shù)主要區(qū)別在于:uprintf()函數(shù)并不會自動添加換行符,需要添函數(shù)并不會自動添加換行符,需要添加換行符加換行符n 進(jìn)行換行進(jìn)行換行。uputs()輸出字符串時
14、自動添加一個換行符。輸出字符串時自動添加一個換行符。uprintf()函數(shù)可以很簡單的在一行上輸出多個函數(shù)可以很簡單的在一行上輸出多個字符串。字符串。202.2.字符串輸入字符串輸入(1)scanf()(1)scanf()函數(shù)函數(shù)u使用帶使用帶%s格式控制符格式控制符scanf()函數(shù)可以用來讀入函數(shù)可以用來讀入一個字符串。一個字符串。 例:例:char name51; scanf(%s,name);u在讀取輸入后,會自動將空字符在讀取輸入后,會自動將空字符0插入數(shù)組插入數(shù)組name中,作為字符串結(jié)束標(biāo)志。中,作為字符串結(jié)束標(biāo)志。u在遇到的第一個空白字符:空格、制表符或換行在遇到的第一個空白字
15、符:空格、制表符或換行符(回車鍵)時停止讀取。符(回車鍵)時停止讀取。 字符數(shù)組名字符數(shù)組名 &name不合法不合法 21char c6; scanf(”%s”,c); China 合法合法abcdef 不合法不合法scanf()scanf()函數(shù)只會把一個單詞而不是把整個語句函數(shù)只會把一個單詞而不是把整個語句作為字符串讀入。作為字符串讀入。 char str13; scanf(”%s”,str); How are you H0w0 0 0 0 0 0 0 000 022(2)gets()(2)gets()函數(shù)函數(shù)u一般形式為一般形式為: gets(字符數(shù)組字符數(shù)組)u作用是輸入一個字符串到字
16、符數(shù)組作用是輸入一個字符串到字符數(shù)組 例:例:gets(name); Tom u遇到換行符(回車鍵)時輸入結(jié)束遇到換行符(回車鍵)時輸入結(jié)束u讀取換行符之前(不包括換行符)的所有字符,并讀取換行符之前(不包括換行符)的所有字符,并在這些字符后添加一個空字符在這些字符后添加一個空字符0u將讀取的換行符丟棄,下一次讀取在新的一行開始。將讀取的換行符丟棄,下一次讀取在新的一行開始。共有共有4個字符,個字符,而不是而不是3個字符個字符23scanf()scanf()函數(shù)和函數(shù)和gets()gets()函數(shù)的比較:函數(shù)的比較:u主要區(qū)別在于如何決定字符串何時結(jié)束。主要區(qū)別在于如何決定字符串何時結(jié)束。us
17、canf()函數(shù)遇到的第一個空白字符(空格、制表函數(shù)遇到的第一個空白字符(空格、制表符或換行符)停止讀取。符或換行符)停止讀取。 ugets()函數(shù)在遇到的第一個換行符停止讀取。函數(shù)在遇到的第一個換行符停止讀取。 ugets()函數(shù)將最后讀取的換行符丟棄,下一次讀函數(shù)將最后讀取的換行符丟棄,下一次讀取在新的一行開始。取在新的一行開始。uscanf()函數(shù)是遇到空白字符時停止讀取,這個字函數(shù)是遇到空白字符時停止讀取,這個字符依然在輸入緩沖區(qū)中,一次從該字符開始讀取。符依然在輸入緩沖區(qū)中,一次從該字符開始讀取。24void main()char a20,c; gets(a); scanf(%c,&
18、c); printf(%sn%d,a,c);結(jié)果:結(jié)果:abc d abc100void main()char a20,c; scanf(%s,a); scanf(%c,&c); printf(%sn%d,a,c);結(jié)果:結(jié)果:abc abc1025【例例5.485.48】編寫一個程序,實現(xiàn)從鍵盤上輸入一個編寫一個程序,實現(xiàn)從鍵盤上輸入一個字符串,將該字符串中的小寫字母變?yōu)榇髮懽帜?,字符串,將該字符串中的小寫字母變?yōu)榇髮懽帜?,而其它字符保持不變。而其它字符保持不變?分析:分析:u先定義一個足夠大小的字符數(shù)組先定義一個足夠大小的字符數(shù)組str,存放從鍵,存放從鍵盤上輸入一個字符串。盤上輸入一個字符串。u從該字符數(shù)組第一元素從該字符數(shù)組第一元素str0 開始,一個一個開始,一個一個數(shù)組元素斷,看是否為小寫字母,如果是的就進(jìn)數(shù)組元素斷,看是否為小寫字母,如果是的就進(jìn)行轉(zhuǎn)換;如果不是則不變,直到該字符串結(jié)束。行轉(zhuǎn)換;如果不是則不變,直到該字符串結(jié)束。直到遇到直到遇到0結(jié)束。結(jié)束。26#include#define N 100void main() char strN; int i=0; printf(Input a s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四川省綿陽市梓潼縣2025-2026學(xué)年七年級上學(xué)期1月期末考試生物試卷(含答案)
- 五年級期末考試卷及答案數(shù)學(xué)
- 初中數(shù)學(xué)分類講知識點課件
- 預(yù)防血管導(dǎo)管相關(guān)感染考試試題及答案
- 四年級下冊數(shù)學(xué)期末測試卷及答案【全優(yōu)】
- 人教版初二下冊政治我們的文化、經(jīng)濟(jì)權(quán)利試題及答案
- 東湖事業(yè)單位招聘2022年考試模擬試題及答案解析30
- 2022-2023學(xué)年滬粵版八年級物理上冊第三章光和眼睛同步訓(xùn)練試卷(含答案詳解版)
- 鋼材力學(xué)性能檢測技術(shù)方法
- 道路照明工程技術(shù)方法
- 平安融資租賃協(xié)議書
- 2025年度廚房用品市場調(diào)研:鍋碗瓢盆、廚具工具及烹飪需求分析
- 光伏施工人員組織方案
- 數(shù)字化工廠方案
- 化工防靜電知識培訓(xùn)課件
- (正式版)DB65∕T 4185-2019 《公路雪害防治技術(shù)規(guī)范》
- 通信冬季施工安全培訓(xùn)課件
- 2024SIWOF斯沃電氣火災(zāi)監(jiān)控系統(tǒng)
- 北京市東城區(qū)2024-2025學(xué)年高一上學(xué)期期末統(tǒng)一檢測語文試卷
- 畢業(yè)論文寫作與答辯(第三版)課件 專題六 論文撰寫
- 史海啟智心育潤心:高中歷史教學(xué)與心理健康教育的融合探索
評論
0/150
提交評論