



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
本文格式為Word版,下載可任意編輯——C語言中兩個(gè)串函數(shù)的使用C語言中兩個(gè)串函數(shù)的使用
導(dǎo)語:在C語言程序設(shè)計(jì)中,字符串是一個(gè)重要的概念,針對(duì)字符串的操作函數(shù)使用頻率很高,更加是串拷貝、串連接函數(shù),對(duì)于初學(xué)者來說很輕易發(fā)生錯(cuò)誤,且會(huì)感到莫名其妙。下面就由我為大家介紹一下C語言中兩個(gè)串函數(shù)的使用,接待大家閱讀!
一、串拷貝函數(shù)strcpy
strcpy俗稱“串拷貝”函數(shù),是將一個(gè)字符串的內(nèi)容拷貝到另一個(gè)字符串中,完成字符串復(fù)制功能。
strcpy函數(shù)原型如下:
char*strcpychar*dest,char*src[1];
從函數(shù)原型來看:兩個(gè)形式參數(shù)都是字符指針,返回值的類型也是字符指針,且值就是目標(biāo)串的存儲(chǔ)地址。這是根本的學(xué)識(shí)。
一用字符數(shù)組存儲(chǔ)字符串
程序在VC6.0中編譯、連接沒有錯(cuò)誤,但運(yùn)行就會(huì)報(bào)錯(cuò),錯(cuò)誤信息關(guān)鍵信息是圖中的畫線片面如圖1所示。
雖然可以通過調(diào)試的方式找出出錯(cuò)的深層次理由,但難度較大。出錯(cuò)的理由在于目標(biāo)串dest實(shí)參1的內(nèi)存空間缺乏以全部容納源串src實(shí)參2的'全體字符。由于目標(biāo)串只占用6個(gè)字節(jié)的內(nèi)存空間,而源串占用了10個(gè)字節(jié)的內(nèi)存空間,串拷貝時(shí)發(fā)生了數(shù)組溢出,展現(xiàn)數(shù)組下標(biāo)越界的處境。這就是最常見的“緩沖區(qū)溢出”錯(cuò)誤[2]。
我們?cè)诰幊虝r(shí)沒有檢查下標(biāo),并且引用了超出數(shù)組邊界的元素而導(dǎo)致錯(cuò)誤,要想制止這種處境就務(wù)必保證目標(biāo)串占駐的空間不小于源字符串的空間。
其中N理應(yīng)是一個(gè)不小于sizeofsrc的常量。sizeofsrc與strlensrc+1在數(shù)量上相等但意義不同,不能代換。理由在于sizeofsrc是一個(gè)運(yùn)算符組織成的常量表達(dá)式,而strlensrc+1是一個(gè)函數(shù)運(yùn)算組成的表達(dá)式,兩者存在本質(zhì)區(qū)別。
二用字符指針存儲(chǔ)字符串
前面的例子是用字符數(shù)組存儲(chǔ)字符串,而下面的例子那么是用字符指針存儲(chǔ)字符串。
很明顯dest的內(nèi)存空間足夠容納src數(shù)組中的全部字符。但是當(dāng)我們?cè)赩C6.0中運(yùn)行時(shí)仍會(huì)報(bào)錯(cuò)錯(cuò)誤信息與圖1所示的類似,這又是為什么呢?由于在執(zhí)行語句char*dest=12345時(shí),在棧中會(huì)為dest指針調(diào)配一個(gè)空間,而12345字符串那么是存儲(chǔ)于文字常量區(qū),指針變量的值就是這個(gè)串常量所在內(nèi)存空間的存儲(chǔ)地址,而文字常量區(qū)中的數(shù)據(jù)是不能變更的,因此不能夠通過dest指針來變更字符串常量12345的值,一旦試圖變更文字常量區(qū)的數(shù)據(jù)那么會(huì)展現(xiàn)錯(cuò)誤。
因此,不能也不要企圖通過串拷貝的方式變更一個(gè)字符串常量的值。
修正方法是將變量dest的類型改為字符數(shù)組,即chardest[6]或者chardest[]=12345;
三目標(biāo)指針指向不確定
因此,在舉行串拷貝操作時(shí),兩個(gè)指針?biāo)赶虻膬?nèi)存空間應(yīng)制止重疊。
對(duì)上述內(nèi)容做一個(gè)總結(jié),在使用串拷貝函數(shù)時(shí):
第一個(gè)參數(shù)實(shí)參在類型上可以是字符數(shù)組,也可以是字符指針。是字符數(shù)組的話,該數(shù)組務(wù)必?fù)碛凶銐虼蟮拇鎯?chǔ)空間如例1;是字符指針的話,務(wù)必有確定的指向且務(wù)必?fù)碛凶銐虼蟮拇鎯?chǔ)空間如例3,但不能指向一個(gè)字符串常量如例2。
其次個(gè)參數(shù)實(shí)參可以是存儲(chǔ)字符串的字符數(shù)組、字符串常量、字符指針該指針指向一個(gè)字符數(shù)組、或者另一字符指針、或者字符串常量。
兩個(gè)實(shí)參在內(nèi)存空間上最好不要有重疊區(qū)域如例4。
二、串連接函數(shù)strcat
串連接函數(shù)的原型是char*strcatchar*dest,char*src[4];功能是將兩個(gè)串dest、src連接起來組合成一個(gè)新字符串dest,并返回新串的存儲(chǔ)地址,這個(gè)地址仍是dest的值;用法上與串拷貝函數(shù)類似。
串連接函數(shù)的第一個(gè)實(shí)參可以是字符數(shù)組,也可以是字符指針,都務(wù)必?fù)碛凶銐虻拇鎯?chǔ)空間,以便存儲(chǔ)連接后的新字符串。例子中被解釋掉的那條語句本身沒有錯(cuò)誤,但它使得指針dest2指向了一個(gè)字符串常量,使得后面的連接操作出錯(cuò),即犯了“字符指針指向了一個(gè)串常量,然后又修改串常量的值”的錯(cuò)誤。需要使用下一行的串拷貝函數(shù)替換它。
同樣,使用該函數(shù)時(shí)兩個(gè)實(shí)參所指示的內(nèi)存空間制止存在重疊區(qū)域。
三、結(jié)語
正確使用這兩個(gè)函數(shù)的要點(diǎn)是第一個(gè)實(shí)參不能是指
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 專利抵押合同范本
- 公司銷售人員合同范例
- 勞務(wù)合同范本 短期
- 單位購買電腦合同范本
- 勾機(jī)鏟車出租合同范本
- 公司水果采購合同范本
- 單位玻璃保潔合同范本
- 蛋糕師招聘合同范本
- 代買股合同范本
- 制式采購合同范本
- 中水回用項(xiàng)目可行性研究報(bào)告
- 2025城市商鋪買賣合同書
- 基于主題式教學(xué)法的初級(jí)漢語綜合課《我的低碳生活》教學(xué)設(shè)計(jì)
- 微信公眾號(hào)運(yùn)營及推廣合同
- 2025年春新北師大版物理八年級(jí)下冊(cè)課件 第六章 質(zhì)量和密度 第一節(jié) 物體的質(zhì)量及其測(cè)量
- 2024全國各省高考詩歌鑒賞真題及解析
- 《價(jià)值觀培訓(xùn)》課件
- 2025年浙江長(zhǎng)興文旅集團(tuán)招聘筆試參考題庫含答案解析
- 醫(yī)院臨床科研大數(shù)據(jù)平臺(tái)方案
- 2024年北京市中考生物真題卷及答案解析
- GA/T 761-2024停車庫(場(chǎng))安全管理系統(tǒng)技術(shù)要求
評(píng)論
0/150
提交評(píng)論