版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第8章
字符數(shù)組與字符串
本章要點(diǎn)字符數(shù)組的定義與賦值字符數(shù)組的初始化與引用字符串的定義及輸入與輸出字符串的處理與字符串處理函數(shù)字符串與指針運(yùn)算本章難點(diǎn)
字符串與指針運(yùn)算
本章目錄8.1字符數(shù)組
8.1.1字符數(shù)組的定義與賦值
8.1.2字符數(shù)組的初始化
8.1.3字符數(shù)組的引用8.2字符串
8.2.1字符串的定義及其輸入與輸出
8.2.2字符串的處理與字符串處理函數(shù)
8.2.3字符串與指針運(yùn)算8.3字符數(shù)組與字符串應(yīng)用舉例8.4常見(jiàn)錯(cuò)誤及解決方法8.1
字符數(shù)組8.1.1字符數(shù)組的定義與賦值(1)字符數(shù)組的定義
字符數(shù)組的定義與一般數(shù)組相同。字符數(shù)組的定義格式如下:存儲(chǔ)種類(lèi)char數(shù)組名[常量表達(dá)式];/*一維字符數(shù)組*/存儲(chǔ)種類(lèi)char數(shù)組名[常量表達(dá)式1][常量表達(dá)式2];/*二維字符數(shù)組*/
8.1
字符數(shù)組8.1.1字符數(shù)組的定義與賦值(2)字符數(shù)組的賦值在數(shù)組定義后對(duì)數(shù)組賦值,只能通過(guò)對(duì)其中的每個(gè)元素逐個(gè)賦值的方式進(jìn)行。例:P228若定義之后在賦值語(yǔ)句中只給部分元素賦值,則剩余沒(méi)有賦值的數(shù)組元素為隨機(jī)字符。8.1
字符數(shù)組8.1.2字符數(shù)組的初始化1.字符初始化用字符為字符數(shù)組初始化,具體有三種情況:(1)初始化所有元素(2)初始化部分元素(3)不指定數(shù)組大小8.1
字符數(shù)組8.1.2字符數(shù)組的初始化
2.字符串初始化用雙引號(hào)括起來(lái)的一個(gè)字符串(字符串常量)作為字符數(shù)組的值注意:字符串初始化與用字符初始化不同,系統(tǒng)會(huì)在字符串常量后自動(dòng)添加一個(gè)字符串結(jié)束標(biāo)記‘\0’。二維數(shù)組也可以直接用字符串來(lái)初始化。如:chart[][10]={"China","America","Japan","Russia"};8.1
字符數(shù)組8.1.3字符數(shù)組的引用1.逐個(gè)引用字符數(shù)組中的單個(gè)字符具體引用形式如:數(shù)組名[下標(biāo)]
例:c[2]='a'+2;c[0]=c[2]+3;2.將字符數(shù)組作為字符串來(lái)處理在一次引用整個(gè)字符數(shù)組時(shí),只需使用數(shù)組名即可
chara[]={"Hello"};printf("%s\n",a);/*用%s格式符輸出時(shí),printf函數(shù)中的輸出項(xiàng)a是數(shù)組名*/8.2字符串8.2.1字符串的定義及其輸入與輸出1.字符串的定義字符串是用雙引號(hào)括起來(lái)的一個(gè)字符序列,由零個(gè)或若干字符的構(gòu)成。字符串可以包括字母、數(shù)字、專(zhuān)用字符和轉(zhuǎn)義字符等。
C語(yǔ)言中字符串通常以字符串常量的形式出現(xiàn).
在C語(yǔ)言中沒(méi)有專(zhuān)門(mén)的字符串變量,字符串如果需要存放在變量中,需要用字符數(shù)組來(lái)存放,即字符串是一種字符型數(shù)組8.2字符串8.2.1字符串的定義及其輸入與輸出2.字符串的輸入與輸出字符串的輸入、輸出可以采用逐個(gè)字符的輸入、輸出方式來(lái)實(shí)現(xiàn),也可采用整體輸入、輸出方式。常用的輸入與輸出函數(shù):輸入函數(shù):gets()scanf()getchar()輸出函數(shù):puts()printf()putchar()8.2字符串8.2.1字符串的定義及其輸入與輸出
2.字符串的輸入與輸出
gets()和puts()用于字符串整體的輸入與輸出,getchar()和putchar()用于單個(gè)字符的輸入與輸出。scanf()和printf()通常情況下可以代替gets()和puts(),用于字符串整體的輸入與輸出。在程序中調(diào)用這些函數(shù)時(shí)需包含頭文件stdio.h。8.2字符串8.2.1字符串的定義及其輸入與輸出
2.字符串的輸入與輸出(1)gets()函數(shù)gets()函數(shù)的調(diào)用格式為:gets(字符數(shù)組名);功能:接受鍵盤(pán)的輸入,將輸入的字符串存放在字符數(shù)組中,直到遇到回車(chē)符時(shí)返回。但是回車(chē)換行符‘\n’不會(huì)作為有效字符存儲(chǔ)到字符數(shù)組中,而是轉(zhuǎn)換為字符串結(jié)束標(biāo)志‘\0’來(lái)存儲(chǔ)。gets()函數(shù)能接受包含空格字符的字符串8.2字符串8.2.1字符串的定義及其輸入與輸出
2.字符串的輸入與輸出(2)scanf()函數(shù)
scanf()函數(shù)在輸入字符串時(shí)使用%s格式控制符,并且與%s對(duì)應(yīng)的地址參數(shù)應(yīng)該是一個(gè)字符數(shù)組,任何時(shí)候都會(huì)忽略前導(dǎo)空格,讀取輸入字符并保存到字符數(shù)組中,直到遇到空格符或回車(chē)符輸入操作便終止了。
scanf()函數(shù)會(huì)自動(dòng)在字符串后面加'\0'。8.2字符串8.2.1字符串的定義及其輸入與輸出
2.字符串的輸入與輸出gets()函數(shù)和scanf()函數(shù)輸入字符串的區(qū)別gets()scanf()輸入的字符串中可包含空格字符輸入的字符串中不可包含空格字符只能輸入一個(gè)字符串可連續(xù)輸入多個(gè)字符串(使用%s%s﹒﹒)不可限定字符串的長(zhǎng)度可限定字符串的長(zhǎng)度(使用%ns)遇到回車(chē)符結(jié)束遇到空格符或回車(chē)符結(jié)束8.2字符串8.2.1字符串的定義及其輸入與輸出
2.字符串的輸入與輸出(3)puts()函數(shù)puts()函數(shù)的調(diào)用格式為:puts(字符數(shù)組名);功能:將字符串中的所有字符輸出到終端上,輸出時(shí)將字符串結(jié)束標(biāo)志'\0'轉(zhuǎn)換成換行符'\n'。使用puts()函數(shù)輸出字符串時(shí)無(wú)法進(jìn)行格式控制8.2字符串8.2.1字符串的定義及其輸入與輸出
2.字符串的輸入與輸出(4)printf()函數(shù)
printf()函數(shù)在輸出字符串時(shí)使用%s格式控制符,并且與%s對(duì)應(yīng)的地址參數(shù)必須是字符串第一個(gè)字符的地址,printf()函數(shù)將依次輸出字符串中的每個(gè)字符直到遇到字符'\0'('\0'不會(huì)被輸出)8.2字符串8.2.2字符串的處理與字符串處理函數(shù)1.字符串的處理
在C語(yǔ)言中,不能通過(guò)運(yùn)算符直接對(duì)字符串進(jìn)行求長(zhǎng)、復(fù)制、連接、比較、查找等操作。要進(jìn)行這些操作,我們既可以利用系統(tǒng)提供的標(biāo)準(zhǔn)庫(kù)函數(shù)來(lái)實(shí)現(xiàn),也可利用數(shù)組自己編寫(xiě)代碼來(lái)完成。利用數(shù)組編寫(xiě)代碼來(lái)逐個(gè)字符的處理字符串,可以幫助我們更好地理解庫(kù)函數(shù)的工作情況。例:P325-2378.2字符串8.2.2字符串的處理與字符串處理函數(shù)
2.字符串處理函數(shù)
C語(yǔ)言函數(shù)中提供了相當(dāng)多的字符串處理函數(shù),熟練掌握這些函數(shù)的使用,非常方便于編程。在使用字符串處理函數(shù)時(shí),應(yīng)包含頭文件”string.h”。8.2字符串8.2.2字符串的處理與字符串處理函數(shù)
2.字符串處理函數(shù)(1)字符串求長(zhǎng)求字符串的長(zhǎng)度的庫(kù)函數(shù)是strlen,其調(diào)用格式為:strlen(字符串的地址);功能:返回字符串中包含的字符個(gè)數(shù)(不包含'\0'),即字符串的長(zhǎng)度。注意:字符串的長(zhǎng)度是指從給定的字符串的起始地址開(kāi)始到第一個(gè)'\0'為止8.2字符串8.2.2字符串的處理與字符串處理函數(shù)
2.字符串處理函數(shù)(2)字符串連接使用strcat函數(shù)可以將兩個(gè)字符串連接起來(lái)構(gòu)成一個(gè)新的字符串。其調(diào)用格式為:
strcat(字符數(shù)組1,字符串2);功能:將字符串2連接到字符串1的后面(包含字符串結(jié)束標(biāo)志'\0'),并返回字符串1的地址。其中,字符串2沒(méi)有變,而字符數(shù)組1中的字符將增加了。注意:字符數(shù)組1的長(zhǎng)度必須足夠大,以便能容納被連接的字符串;字符串2可以是字符數(shù)組名,也可以是字符串常量。8.2字符串8.2.2字符串的處理與字符串處理函數(shù)
2.字符串處理函數(shù)(3)字符串復(fù)制字符串的復(fù)制需使用strcpy、strncpy函數(shù)。strcpy函數(shù)調(diào)用格式為:strcpy(字符數(shù)組1,字符串2);功能:字符串2復(fù)制到字符數(shù)組1中去(包括字符串2結(jié)束標(biāo)志‘\0’)。字符數(shù)組1必須是一個(gè)字符數(shù)組變量,且其長(zhǎng)度必須足夠大,以便能容納字符串2,字符串2可以是字符數(shù)組名,也可以是字符串常量。8.2字符串8.2.2字符串的處理與字符串處理函數(shù)
2.字符串處理函數(shù)(3)字符串復(fù)制strncpy函數(shù)strncpy函數(shù)的調(diào)用格式為:
strnpy(字符數(shù)組1,字符串2,長(zhǎng)度n);功能:將字符串2的前n個(gè)字符串復(fù)制到字符數(shù)組1中去,并在末尾加'\0'。因此strncpy函數(shù)可以實(shí)現(xiàn)字符串的部分復(fù)制。當(dāng)n大于或等于字符串2的長(zhǎng)度時(shí),strncpy等價(jià)于strcpy。8.2字符串8.2.2字符串的處理與字符串處理函數(shù)
2.字符串處理函數(shù)(5)字符串比較字符串比較的函數(shù)是strcmp,其調(diào)用格式為:
strcmp(字符串1,字符串2);功能:比較字符串1和字符串2的大小。若字符串1等于字符串2,則返回0;若字符串1大于字符串2,則返回正整數(shù);若字符串1小于字符串2,則返回負(fù)整數(shù)。8.2字符串8.2.2字符串的處理與字符串處理函數(shù)
2.字符串處理函數(shù)其他常用的字符或字符串處理函數(shù)見(jiàn)課本P239表8-3字符串處理函數(shù)8.2字符串8.2.3字符串與指針運(yùn)算
字符串本質(zhì)上是以‘\0’結(jié)尾字符數(shù)組。字符串在內(nèi)存中的起始地址(即第一個(gè)字符的地址)通常稱(chēng)為字符串的指針,可以定義一個(gè)字符指針變量指向一個(gè)字符串。(1)字符串的表示在C語(yǔ)言中,既可以用字符數(shù)組來(lái)表示字符串,也可用字符指針來(lái)表示字符串如:charstr[]="Goodmorning!";char*p="Goodmorning!";8.2字符串8.2.3字符串與指針運(yùn)算(2)字符串的引用當(dāng)利用字符指針變量表示字符串時(shí),可逐個(gè)引用字符串中的字符,也可整體引用字符串。
P240:例8-5與例8-68.2字符串8.2.3字符串與指針運(yùn)算(3)字符指針作函數(shù)參數(shù)
將一個(gè)字符串從一個(gè)函數(shù)傳遞給另一個(gè)函數(shù),可用地址傳遞的方法,即用字符數(shù)組名作為參數(shù),也可用指向字符的指針變量做參數(shù)。在被調(diào)用的函數(shù)中可以改變字符串的內(nèi)容,在主調(diào)函數(shù)中可以得到改變了得字符串。P240:例8-78.2字符串8.2.3字符串與指針運(yùn)算(4)字符指針變量與字符數(shù)組的比較字符指針變量和字符數(shù)組都能實(shí)現(xiàn)字符串的存儲(chǔ)和處理,但二者是有區(qū)別。不同點(diǎn):
a.存儲(chǔ)內(nèi)容不同
b.賦值方式不同
c.地址常量與地址變量的不同8.3字符數(shù)組與字符串應(yīng)用舉例見(jiàn)教材例8-8,例8-8,例8-108.4常見(jiàn)錯(cuò)誤及解決方法小結(jié)(1)字符數(shù)組也是一種常規(guī)數(shù)組,其定義形式與一般數(shù)組相同。(2)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度油氣田打井工程設(shè)計(jì)與施工總承包合同4篇
- 2025年度水塔供水工程進(jìn)度與質(zhì)量保證合同4篇
- 2024節(jié)能燈購(gòu)買(mǎi)合同
- 2024版權(quán)購(gòu)買(mǎi)合同模板
- 2024版工程安全生產(chǎn)許可證協(xié)議
- 2025年度新型綠色建筑材料出口買(mǎi)賣(mài)合同4篇
- 2024版廣告公司承包經(jīng)營(yíng)合同
- 2025年靜電場(chǎng)治療儀項(xiàng)目投資可行性研究分析報(bào)告
- 2024版模特隱私保密協(xié)議書(shū)范本
- 2024年起重機(jī)安裝與安全教育培訓(xùn)合同范本3篇
- 割接方案的要點(diǎn)、難點(diǎn)及采取的相應(yīng)措施
- 2025年副護(hù)士長(zhǎng)競(jìng)聘演講稿(3篇)
- 2025至2031年中國(guó)臺(tái)式燃?xì)庠钚袠I(yè)投資前景及策略咨詢研究報(bào)告
- 原發(fā)性腎病綜合征護(hù)理
- (一模)株洲市2025屆高三教學(xué)質(zhì)量統(tǒng)一檢測(cè) 英語(yǔ)試卷
- 第三章第一節(jié)《多變的天氣》說(shuō)課稿2023-2024學(xué)年人教版地理七年級(jí)上冊(cè)
- 2025年中國(guó)電科集團(tuán)春季招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年度建筑施工現(xiàn)場(chǎng)安全管理合同2篇
- 建筑垃圾回收利用標(biāo)準(zhǔn)方案
- 2024年考研英語(yǔ)一閱讀理解80篇解析
- 樣板間合作協(xié)議
評(píng)論
0/150
提交評(píng)論