




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第12章字符串處理運(yùn)算C語(yǔ)言中,字符串處理運(yùn)算是常常遇見(jiàn)的。本章我們來(lái)學(xué)習(xí)字符串的輸入、其它數(shù)據(jù)類型如何轉(zhuǎn)換成字符串、相關(guān)操作函數(shù)以及字符串的輸出。對(duì)于字符串的處理運(yùn)算,我們可以自定義函數(shù)實(shí)現(xiàn)。當(dāng)然,也可以通過(guò)調(diào)用庫(kù)函數(shù)中包含的相關(guān)函數(shù)實(shí)現(xiàn)。這樣使用起來(lái)可以簡(jiǎn)化我們的程序代碼。本章主要從庫(kù)函數(shù)調(diào)用的方式實(shí)現(xiàn)對(duì)字符串的處理。12.1字符串的輸入字符串的輸入有兩種方式:逐個(gè)字符輸入和整個(gè)字符串輸入。本節(jié)主要講解這兩方面內(nèi)容。12.1.1逐個(gè)字符輸入通過(guò)逐個(gè)字符輸入字符串的方式,我們用到的標(biāo)準(zhǔn)輸入輸出函數(shù)有scanf()和getchar()兩個(gè)函數(shù)。scanf()函數(shù)我們已經(jīng)在前面的章節(jié)中講過(guò),這里主要講解getchar()函數(shù)。getchar()函數(shù)的基本調(diào)用形式以及說(shuō)明如圖12.1所示。12.1.2整個(gè)字符串輸入我們也可以通過(guò)整個(gè)字符輸入的方式對(duì)字符串輸入。整個(gè)字符串的輸入函數(shù)有scanf()和gets()兩個(gè)函數(shù)。gets()函數(shù)的調(diào)用形式如圖12.3所示。12.2將其它類型轉(zhuǎn)換成字符串的運(yùn)算其它數(shù)據(jù)類型可以轉(zhuǎn)換成字符串,我們通過(guò)庫(kù)函數(shù)“stdlib.h”中的幾個(gè)函數(shù)來(lái)實(shí)現(xiàn),如表12-1所示。實(shí)現(xiàn)的功能函數(shù)調(diào)用形式參數(shù)返回值將浮點(diǎn)數(shù)value轉(zhuǎn)換成字符串ecvt(value,ndigit,&decpt,&sign);value:要轉(zhuǎn)換的浮點(diǎn)數(shù),輸入?yún)?shù)
ndigit:小數(shù)點(diǎn)后面的位數(shù),輸入?yún)?shù)
decpt:表示小數(shù)點(diǎn)的位置,輸出參數(shù)
sign:表示符號(hào),0為正數(shù),1為負(fù)數(shù),輸出參數(shù)返回字符串將浮點(diǎn)數(shù)value轉(zhuǎn)換成字符串fcvt(value,ndigit,&decpt,&sign);value:要轉(zhuǎn)換的浮點(diǎn)數(shù),輸入?yún)?shù)
ndigit:小數(shù)點(diǎn)后面的位數(shù),輸入?yún)?shù)
decpt:表示小數(shù)點(diǎn)的位置,輸出參數(shù)
sign:表示符號(hào),0為正數(shù),1為負(fù)數(shù),輸出參數(shù)返回字符串將浮點(diǎn)數(shù)value轉(zhuǎn)換成字符串gcvt(value,ndigit,&buf);value:被轉(zhuǎn)換的值
ndigit:存儲(chǔ)的有效數(shù)字位數(shù)buf:結(jié)果的存儲(chǔ)位置轉(zhuǎn)換后的字符串存于buf中,返回buf的指針將無(wú)符號(hào)整型value轉(zhuǎn)換成字符串,radix為轉(zhuǎn)換時(shí)所用基數(shù)ultoa(value,&string,radix);value:要轉(zhuǎn)換的數(shù)string:字符串結(jié)果rtadix:value的基數(shù)。指向string的指針將長(zhǎng)整型value轉(zhuǎn)換成字符串并返回該字符串,radix為轉(zhuǎn)換時(shí)所用基數(shù)ltoa(value,&string,radix);value::要轉(zhuǎn)換的數(shù)值
string:轉(zhuǎn)換后指向字符串的指針
radix:進(jìn)制指向string的指針將整型value轉(zhuǎn)換成字符串存入string,radix為轉(zhuǎn)換時(shí)所用基數(shù)itoa(value,&string,radix);value:要轉(zhuǎn)換的數(shù)值
string:轉(zhuǎn)換后指向字符串的指針
radix:進(jìn)制指向string的指針12.3字符串的操作12.3.1字符串的復(fù)制C語(yǔ)言中,我們可以把一個(gè)字符串復(fù)制到另一個(gè)字符串中,或者把一個(gè)字符串添加到另一個(gè)字符串的結(jié)尾。我們也可以指定一個(gè)字符串的n個(gè)字符復(fù)制到另一個(gè)字符串中。為了實(shí)現(xiàn)以上幾個(gè)功能,我們需要使用到函數(shù)。并且這些函數(shù)都是被包含在“string.h”頭文件中的,它們的功能調(diào)用形式如表12-2所示。12.3.1字符串的復(fù)制實(shí)現(xiàn)的功能函數(shù)調(diào)用形式使用說(shuō)明返回值將字符串復(fù)制strcpy(dest,src);把從src地址開(kāi)始且含有NULL結(jié)束符的字符串賦值到以dest開(kāi)始的地址空間返回指向dest的指針strdup(s);復(fù)制字符串s返回字符串連接字符串strcat(dest,src);把src所指字符串添加到dest結(jié)尾處(覆蓋dest結(jié)尾處的'\0')并添加'\0'返回指向dest的指針把字符串的前n個(gè)字符添加到一個(gè)字符串的結(jié)尾處strncat(dest,src,n);把src所指字符串的前n個(gè)字符添加到dest結(jié)尾處(覆蓋dest結(jié)尾處的'\0')并添加'\0'返回指向dest的指針一個(gè)字符串復(fù)制到所在的數(shù)組中stpcpy(dest,src);把src所指由NULL結(jié)束的字符串復(fù)制到dest所指的數(shù)組中返回指向dest結(jié)尾處字符(NULL)的指針將字符串的前n個(gè)字符置為字符cstrnset(src,c,n);將字符串src的前n個(gè)字符置為字符c返回指向str的指針將一個(gè)字符串中的所有字符都設(shè)為指定字符strset(s,c);將字符串s所有的字符置為字符c返回指向s的指針12.3.2字符串的比較C語(yǔ)言中,可以通過(guò)頭文件“string.h”中的函數(shù)比較字符串的大小,如表12-3所示。實(shí)現(xiàn)的功能函數(shù)調(diào)用形式使用說(shuō)明返回值比較兩個(gè)字符串的大小strcmp(s1,s2);比較字符串s1和s2當(dāng)s1<s2時(shí),返回值<0當(dāng)s1=s2時(shí),返回值=0當(dāng)s1>s2時(shí),返回值>0stricmp(s1,s2);比較字符串s1和s2,但不區(qū)分字母的大小寫當(dāng)s1<s2時(shí),返回值<0當(dāng)s1=s2時(shí),返回值=0當(dāng)s1>s2時(shí),返回值>0比較字符串s1和s2的前n個(gè)字符strncmp(s1,s2,n);比較字符串s1和s2的前n個(gè)字符如果前n個(gè)字符完全相等,返回值就=0;在前n字符比較strnicmp(s1,s2,n);比較字符串s1和s2的前maxlen個(gè)字符,但不區(qū)分字母大小寫如果前n個(gè)字符完全相等,返回值就=0;在前n字符比較12.3.3字符串大小寫轉(zhuǎn)換字符串可以大小寫轉(zhuǎn)換,我們可以通過(guò)庫(kù)函數(shù)中的函數(shù)實(shí)現(xiàn),如表12-4所示。實(shí)現(xiàn)的功能函數(shù)調(diào)用形式使用說(shuō)明返回值將字符串s轉(zhuǎn)換為小寫形式strlwr(s);將字符串s轉(zhuǎn)換為小寫形式(只轉(zhuǎn)換s中出現(xiàn)的大寫字母,不改變其它字符)。返回指向s的指針將字符串s轉(zhuǎn)換為大寫形式strupr(s);將字符串s轉(zhuǎn)換為大寫形式(只轉(zhuǎn)換s中出現(xiàn)的小寫字母,不改變其它字符)。返回指向s的指針12.3.4字符串的字符個(gè)數(shù)相關(guān)運(yùn)算有時(shí)我們會(huì)遇到計(jì)算字符串的個(gè)數(shù)?;蛘邫z索某個(gè)字符在一個(gè)字符串中出現(xiàn)的次數(shù)以及記錄兩個(gè)字符串中均有的字符個(gè)數(shù)等。處理這些問(wèn)題我們可以使用以下函數(shù),如表12-5所示。12.3.4字符串的字符個(gè)數(shù)相關(guān)運(yùn)算實(shí)現(xiàn)的功能函數(shù)調(diào)用形式使用說(shuō)明返回值計(jì)算字符串s的長(zhǎng)度strlen(s);計(jì)算字符串s的(unsignedint型)長(zhǎng)度,不包括'\0'在內(nèi)。返回s的長(zhǎng)度,不包括結(jié)束符’\0’記錄兩個(gè)字符串的第一個(gè)出現(xiàn)相同的字符的位置strcspn(s1,s2);順序在字符串s1中搜尋與s2中字符的第一個(gè)相同字符,返回這個(gè)字符在S1中第一次出現(xiàn)的位置。返回第一個(gè)出現(xiàn)的字符在s1中的下標(biāo)值,亦即在s1中出現(xiàn)而s2中沒(méi)有出現(xiàn)的子串的長(zhǎng)度查詢一個(gè)字符串中第一次出現(xiàn),某一個(gè)字符的位置strchr(s,c);查找字符串s中首次出現(xiàn)字符c的位置。返回首次出現(xiàn)c的位置的指針,如果s中不存在c則返回NULL檢測(cè)一個(gè)字符串是否包含另一個(gè)字符串strpbrk(s1,s2);依次檢驗(yàn)字符串s1中的字符,當(dāng)被檢驗(yàn)字符在字符串s2中也包含時(shí),則停止檢驗(yàn),并返回該字符位置,空字符NULL不包括在內(nèi)。返回s1中第一個(gè)滿足條件的字符的指針,如果沒(méi)有匹配字符則返回空指針NULL查詢一個(gè)字符串在另外一個(gè)字符串出現(xiàn)的最后一次的位置strrchr(s,c);查找一個(gè)字符c在另一個(gè)字符串str中末次出現(xiàn)的位置(也就是從str的右側(cè)開(kāi)始查找字符c首次出現(xiàn)的位置),并返回該位置。如果未能找到指定字符,那么函數(shù)將返回NULL。一個(gè)字符c在另一個(gè)字符串str中末次出現(xiàn)的位置對(duì)一個(gè)字符串倒序排序strrev(s);把字符串s的所有字符的順序顛倒過(guò)來(lái)(不包括空字符NULL)。返回指向顛倒順序后的字符串指針計(jì)算一個(gè)字符串中有幾個(gè)字符屬于另一個(gè)字符串strspn(s1,s2);若strspn()返回的數(shù)值為n,則代表字符串s開(kāi)頭連續(xù)有n個(gè)字符都是屬于字符串a(chǎn)ccept內(nèi)的字符。返回字符串s開(kāi)頭連續(xù)包含字符串a(chǎn)ccept內(nèi)的字符數(shù)目找出一個(gè)字符串包含另一個(gè)字符串的位置strstr(s1,s2);找出str2字符串在str1字符串中第一次出現(xiàn)的位置(不包括str2的串結(jié)束符)。返回該位置的指針,如找不到,返回空指針?lè)纸庾址畇trtok(s1,s2);分解字符串為一組字符串。s為要分解的字符串,delim為分隔符字符串。返回從s開(kāi)頭開(kāi)始的一個(gè)個(gè)被分割的串。當(dāng)沒(méi)有被分割的串時(shí)則返回NULL12.4字符串的輸出字符串的輸出同字符串的輸入一樣,也有兩種輸出方式:逐個(gè)字符輸出與整個(gè)字符串輸出。本節(jié)主要講解字符串的輸出。12.4.1逐個(gè)字符的輸出逐個(gè)字符的輸出函數(shù)包括printf()和putchar()兩個(gè)函數(shù)。printf()函數(shù)我們已經(jīng)講過(guò),這里主要學(xué)習(xí)putchar()函數(shù)對(duì)字符串的輸出。putchar()函數(shù)的調(diào)用形式如圖12.14所示。12.4.2整個(gè)字符串的輸出整個(gè)字符串的輸出函數(shù)有printf()和puts()函數(shù)。調(diào)用puts()函數(shù)的基本形式如圖12.16所示。12.4.3字符串輸入輸出小結(jié)除了我們很熟悉的scanf()函數(shù)與printf()函數(shù),我們這里
溫馨提示
- 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)爐渣開(kāi)發(fā)利用生產(chǎn)建設(shè)項(xiàng)目可行性研究報(bào)告(一)
- 2024年全球及中國(guó)直角軸交流齒輪馬達(dá)行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 藥物臨床前研究服務(wù)項(xiàng)目風(fēng)險(xiǎn)識(shí)別與評(píng)估綜合報(bào)告
- 2025-2030年中國(guó)后簧吊耳行業(yè)深度研究分析報(bào)告
- 2025年開(kāi)口背心購(gòu)物袋行業(yè)深度研究分析報(bào)告
- 2025-2030年中國(guó)不銹鋼重型搭扣行業(yè)深度研究分析報(bào)告
- 酒業(yè)區(qū)域經(jīng)銷銷售合同5篇
- 人力資源部實(shí)習(xí)報(bào)告
- (完整版)塑膠跑道工程施工合同7篇
- 2025年倉(cāng)儲(chǔ)租賃合同草簽協(xié)議書(shū)
- 學(xué)術(shù)英語(yǔ)智慧樹(shù)知到答案2024年南開(kāi)大學(xué)
- 【部編版道德與法治六年級(jí)下冊(cè)】全冊(cè)測(cè)試卷(含答案)
- 2024年中考英語(yǔ)專項(xiàng)復(fù)習(xí):傳統(tǒng)文化的魅力(閱讀理解+完型填空+書(shū)面表達(dá))(含答案)
- 酒店物業(yè)管理服務(wù)合同范本
- 2024-2030年中國(guó)磷系阻燃劑行業(yè)市場(chǎng)發(fā)展分析及發(fā)展趨勢(shì)與投資前景研究報(bào)告
- 2024-2030年中國(guó)公路勘察設(shè)計(jì)行業(yè)市場(chǎng)深度調(diào)研及競(jìng)爭(zhēng)格局與發(fā)展趨勢(shì)研究分析報(bào)告
- 報(bào)價(jià)單完整版本
- JT-T-794-2019道路運(yùn)輸車輛衛(wèi)星定位系統(tǒng)車載終端技術(shù)要求
- 【課件】勃蘭登堡協(xié)奏曲Ⅱ+課件高一上學(xué)期音樂(lè)人音版(2019)必修音樂(lè)鑒賞
- G -B- 5009.11-2024 食品安全國(guó)家標(biāo)準(zhǔn) 食品中總砷及無(wú)機(jī)砷的測(cè)定(正式版)
- 小學(xué)四年級(jí)小數(shù)單位換算練習(xí)題100道
評(píng)論
0/150
提交評(píng)論