



免費預(yù)覽已結(jié)束,剩余1頁可下載查看
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第八講 字符與字符串第八講字符與字符串引言一、教學(xué)目的本講主要介紹了C語言中關(guān)于字符和字符串的操作方法。要求大家掌握字符和字符串的輸入輸出方法,掌握字符串的存儲特點以及常用字符串操作函數(shù)的使用,了解的二維字符串?dāng)?shù)組的使用。二、知識要點1.單個字符的輸入輸出(1)函數(shù)getchar()的使用(2)函數(shù)putchar()的使用2.字符數(shù)組與字符串(1)字符數(shù)組(2)字符串3.字符串的輸入和輸出函數(shù)(1)函數(shù)puts()的使用(2)函數(shù)gets()的使用4.字符串操作函數(shù)函數(shù)strlen()、strcpy()、strcat()、strcmp()、strlwr()、strupr()的功能5.二維字符串?dāng)?shù)組(1)二維字符串?dāng)?shù)組的初始化(2)二維字符串?dāng)?shù)組的輸入輸出三、邊用邊學(xué)8.1單個字符的輸入輸出C語言頭文件“stdio.h”中還定義了兩個專門用于單個字符輸入輸出的函數(shù)getchar()和putchar()。一、字符輸入函數(shù)getchar()getchar()函數(shù)作用是從輸入設(shè)備(如鍵盤)讀取一個字符。函數(shù)getchar()沒有參數(shù),其一般形式為getchar( );其執(zhí)行結(jié)果是從輸入設(shè)備得到一個字符??梢?,getchar()函數(shù)同帶格式符%c的scanf()函數(shù)都可以接收一個字符,并且可以將得到的字符賦給一個字符型變量或者整型變量。但是不是所有場合二者都可以互相替換。下面我們列出了它們的不同之處:(1)getchar()一次只能接收一個字符。(2)getchar()可以接收回車字符。而scanf()將回車作為數(shù)據(jù)的間隔符或結(jié)束符。(3)getchar()接收的字符可以不賦給任何變量。二、字符輸出函數(shù)putchar()putchar()函數(shù)作用是將一個字符輸出到輸出設(shè)備(如顯示器)。它的一般形式為putchar(字符型或整型數(shù)據(jù));函數(shù)putchar()的可以輸出字符型變量、整型變量、字符型常量以及控制字符和轉(zhuǎn)義字符。8.2字符數(shù)組與字符串一、字符數(shù)組如果一個數(shù)組的元素是字符型數(shù)據(jù),則該數(shù)組為字符數(shù)組。所以字符數(shù)組的定義、引用、初始化同樣遵循上一講“數(shù)組”的規(guī)定。字符數(shù)組的賦值符合數(shù)組的有關(guān)要求,除了在定義時初始化,只能一個元素一個元素地賦值。同樣將字符數(shù)組中的全部內(nèi)容輸出,也只能一個元素一個元素地輸出。上述方式只能用于處理已知個數(shù)的字符序列,并且當(dāng)字符序列發(fā)生變化時,字符數(shù)組無法伴隨字符序列長度的變化而變化??梢?,將一個字符序列看作是單個字符的集合的處理方式比較單一和笨拙。C語言中常將字符序列當(dāng)作字符串來處理,由于字符串的結(jié)構(gòu)的特殊性,它不僅具備一般單個字符的集合的所有處理方式,而且它的輸入輸出更為靈活,并且可以使用C語言提供的強大的字符串處理函數(shù)。所以C語言的字符串的處理方式,極大地提高了C語言處理字符序列的能力。二、字符串在C語言中,字符序列當(dāng)作字符串來處理。字符串的處理是基于字符數(shù)組的。字符串在實際存儲時其尾部添加了一個結(jié)束標(biāo)志0。0代表ASCII碼為0的字符,是一個空操作符,表示什么也不干。所以采用字符數(shù)組存放字符串,其賦值時應(yīng)包含結(jié)束標(biāo)志0。字符串除了具備以上字符數(shù)組的處理方式之外,還可以采用C語言提供的輸入輸出字符串的格式符“%s”。需要注意的是:當(dāng)格式符為“%s”時,scanf()函數(shù)的地址列表是字符數(shù)組的名字,并且無需加地址符&。printf()函數(shù)中格式符對應(yīng)的變量是字符數(shù)組的名字。利用格式符“%s”輸入輸出字符串,字符數(shù)組只要不小于字符串的個數(shù)即可。所以這是C語言中最常用的字符序列處理方法。8.3字符串的輸入和輸出函數(shù)在C語言提供了字符串的輸入輸出函數(shù)gets()和puts(),它們在頭文件“stdio.h”中定義的,用于整串字符串的輸入輸出。一、字符串輸出函數(shù)puts()puts()函數(shù)作用是將一個字符串(以0結(jié)束的字符序列)輸出,其一般形式為puts(字符數(shù)組名);或puts(字符串);函數(shù)puts()的使用注意以下幾個問題:1.函數(shù)puts()一次只能輸出一個字符串。2.函數(shù)puts()可以輸出轉(zhuǎn)義字符。3.函數(shù)puts()輸出字符串后自動換行。printf()函數(shù)可以同時輸出多個字符串,并且能靈活控制是否換行。所以printf()函數(shù)比puts()函數(shù)更為常用。二、字符串輸入函數(shù)gets()gets()函數(shù)作用是將一個字符串輸入到字符數(shù)組中,其一般形式為gets(字符數(shù)組名);gets()函數(shù)同scanf()函數(shù)一樣,在讀入一個字符串后,系統(tǒng)自動在字符串后加上一個字符串結(jié)束標(biāo)志0。函數(shù)gets()的使用時要注意以下幾個問題:1.函數(shù)gets()只能一次輸入一個字符串。2.函數(shù)gets()可以讀入包含空格和TAB的全部字符,直到遇到回車為止。使用格式符“%s”的函數(shù)scanf(),以空格、TAB或回車作為一段字符串的間隔符或結(jié)束符,所以含有空格或TAB的字符串要用gets()函數(shù)輸入。8.4字符串操作函數(shù)C語言提供了很多字符串操作函數(shù),其對應(yīng)的頭文件為string.h。1.strlen(字符串)strlen()是測試字符串實際長度的函數(shù),它的返回值是字符串中字符的個數(shù)(不包含0的個數(shù))。2.strcpy(字符數(shù)組1,字符串2)strcpy()用于將字符串2復(fù)制到字符數(shù)組1中。函數(shù)strcpy()使用時注意以下幾點:(1)字符數(shù)組1必須足夠大,以便容納字符串2的內(nèi)容。(2)字符串2可以是字符數(shù)組名或者字符串常量。當(dāng)字符串2為字符數(shù)組名時,只復(fù)制第一個0前面的內(nèi)容(含0),其后內(nèi)容不復(fù)制。3.strcat(字符數(shù)組1,字符串2)strcat()的作用是將字符串2的內(nèi)容復(fù)制連接在字符數(shù)組1的后面,其返回值為字符數(shù)組1的地址。函數(shù)strcpy()使用時注意以下幾點:(1)字符數(shù)組1不能是字符串常量,并且必須足夠大,以便可以繼續(xù)容納字符串2的內(nèi)容。(2)連接前字符數(shù)組1的0將被字符串2覆蓋,連接后生成的新的字符串的最后保留一個0。4.strcmp(字符串1,字符串2)strcmp()的作用是比較字符串1和字符串2。兩個字符串從左至右逐個字符比較(按照字符的ASCII碼值的大小),直到字符不同或者遇見0為止。如果全部字符都相同,則返回值為0。如果不相同,則返回兩個字符串中第一個不相同的字符的ASCII碼值的差,即字符串1大于字符串2時函數(shù)值為正,否則為負。漢字同樣可以作為字符串處理,可以使用strlen()、strcpy()、strcat()和strcmp()函數(shù),注意1個漢字相當(dāng)于2個字符,并且漢字比較大小是按照漢字存儲在計算機中的國標(biāo)碼的大小。5.strlwr(字符串)strlwr()的作用是將字符串中大寫字母轉(zhuǎn)換成小寫字母。6.strupr(字符串)strupr()的作用是將字符串中小寫字母轉(zhuǎn)換成大寫字母。8.5二維字符串?dāng)?shù)組一、二維字符串?dāng)?shù)組的初始化二維字符串?dāng)?shù)組的初始化,可以采用二維字符數(shù)組初始化形式或者字符串初始化形式,如:char name210=J,o,h,n,0,M,a,r,r,y,0;char name210=”John”,”Marry”;char name210=”John”,”Marry”;三種方法效果一樣。二、二維字符串?dāng)?shù)組的賦值和引用由于二維數(shù)組可以看作是一個特殊的一維數(shù)組,它的數(shù)組元素是一個一維數(shù)組。所以二維字符串?dāng)?shù)組可以看作是這樣一個一維數(shù)組,它的元素是一個字符串。例如:char name210=”John”,”Marry”;三、二維字符串?dāng)?shù)組作為函數(shù)參數(shù)二維字符串?dāng)?shù)組的元素和數(shù)組名都可以作為函數(shù)參數(shù),并且使用方法與二維數(shù)組的使用方法相同。作業(yè)1.編寫一個函數(shù)string_change(char str ),要求實現(xiàn)str中的字符的互換。如”abcde”換成”edcba”。2.編寫一個函數(shù)char_search(char str ,char c),如果字符串str中包含字符c則返回數(shù)值1,否則返回數(shù)值0。3.編寫一個函數(shù)string_cut(char string ,char c),其功能是刪除字符串中所有的字符變量c,例如char string=“abaca”; char c=a;則執(zhí)行string_cut(string,c)后,string的內(nèi)容變?yōu)椤眀c”。4.編寫一個函數(shù)string_search(char str1 ,char str2 ),如果字符串str1中包含字符串2則返回數(shù)值1,否則返回數(shù)值0。5.進一步完善“學(xué)生成績管理系統(tǒng)”。主菜單
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 示范學(xué)校德育工作匯報
- 補光干預(yù)對紅豆杉生長周期的影響機制研究
- 外出授課試講管理辦法
- 辦公修舊利廢管理辦法
- 500KV輸電線路鐵塔斜柱斜面施工詳解
- 崗山窯文化遺產(chǎn)活化促進地方農(nóng)業(yè)產(chǎn)業(yè)發(fā)展模式探索
- 民警十二分制管理辦法
- 樓宇智能化PLC控制系統(tǒng)的設(shè)計與實現(xiàn)
- 生物多樣性保護與恢復(fù)機制-洞察及研究
- 地方國資集團投資能力提升路徑研究
- GB/T 5163-2006燒結(jié)金屬材料(不包括硬質(zhì)合金)可滲性燒結(jié)金屬材料密度、含油率和開孔率的測定
- GB/T 17989.2-2020控制圖第2部分:常規(guī)控制圖
- 建設(shè)項目安全設(shè)施‘三同時’課件
- 2022語文課程標(biāo)準:“語言文字積累與梳理”任務(wù)群解讀及實操
- DB15T 489-2019 石油化學(xué)工業(yè)建設(shè)工程技術(shù)資料管理規(guī)范
- 內(nèi)蒙古自治區(qū)通遼市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會明細及行政區(qū)劃代碼
- 螺旋溜槽安裝標(biāo)準工藝
- 2022年人教版六年級下冊語文期末考試卷
- 《土地開發(fā)整理項目預(yù)算編制暫行辦法》
- 安徽省評議公告的中小學(xué)教輔材料零售價格表
- 德龍自卸車合格證掃描件(原圖)
評論
0/150
提交評論