第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

strcpy與strcat的關(guān)系

為什么先拼接再拷貝不行呢。。。

正在回答

4 回答

首先你得知道:

s1是一個長度為100的字符數(shù)組。

s2是一個長度為4的字符數(shù)組。這是因為雖然你在聲明時沒有指定數(shù)組的長度,但是你用一個長度為4的字符串初始化s2,所以編譯器自動將s2的長度確定為4。

s3是一個長度為4的字符數(shù)組。道理同上。


strcat(s2, s3) 這個函數(shù)是將s3中的內(nèi)容(包括s3結(jié)尾的'\0')復(fù)制到s2中最后一個字符的后面(覆蓋掉s2原來結(jié)尾的'\0'),這樣就能把兩個字符串中的字符連起來了,并且還是'\0'結(jié)尾。

注意:這就需要s2有足夠的長度來容納這么多的字符,長度至少為 strlen(s2) + strlen(s3) + 1,最后這個1就是結(jié)尾的'\0'。


但是你的s2長度只有4,所以寫越界了。而后面的字符有可能寫入到了后面,也有可能無法成功寫入而發(fā)生錯誤。

為什么說是有可能呢? 因為strcat這個函數(shù)就是從s2的最后寫入s3的內(nèi)容,它不管你這個字符串到底要寫多長,也不知道容納它的數(shù)組有多長,其實它都不知道你的字符串是不是在數(shù)組中,它只是單純地在內(nèi)存中往后寫。所以很可能寫出界,更糟的是可能會覆蓋掉后面的東西,引起各種各樣的錯誤,甚至是崩潰! ?所以在真實的開發(fā)中千萬要注意數(shù)組訪問越界的問題。

在本站中它判斷你寫了?strcat( s1 , s3 ) 才算寫對。因為s1足夠長。

1 回復(fù) 有任何疑惑可以回復(fù)我~
#1

天再高又怎樣 提問者

非常感謝!原來如此
2015-01-30 回復(fù) 有任何疑惑可以回復(fù)我~

我懂了

0 回復(fù) 有任何疑惑可以回復(fù)我~

謝謝啦

但是我那樣做就顯示不出來結(jié)果了,...

0 回復(fù) 有任何疑惑可以回復(fù)我~

這個只是個練習(xí),可以按你說的,這里主要的目的是讓大家對該方法的使用有個認(rèn)知和練習(xí)

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消
C語言入門
  • 參與學(xué)習(xí)       926896    人
  • 解答問題       21532    個

C語言入門視頻教程,帶你進(jìn)入編程世界的必修課-C語言

進(jìn)入課程

strcpy與strcat的關(guān)系

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號