1 回答

TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊
C 語(yǔ)言規(guī)定字符串是“一串以 '\0' 結(jié)尾字符序列”。一般用字符數(shù)組來(lái)保存,數(shù)組中的字符自然是連續(xù)排列的,另外別忘了用 '\0' 結(jié)尾。
處理字符串的庫(kù)函數(shù)都遵循這個(gè)邏輯。
fit 這個(gè)函數(shù)只是是在字符數(shù)組的相應(yīng)位置中寫(xiě)入 '\0'。
比如 fit(msg, 38),就是把 mesg 字符串中的逗號(hào)改為 '\0'。這樣后面 puts 在打印字符串時(shí),打印到這個(gè) '\0' 時(shí)就認(rèn)為字符串結(jié)束了,于是原來(lái)逗號(hào)后面的部分就不會(huì)被打印出來(lái)。
后面 puts(mesg + 39),這是讓 puts 從 mesg 字符串的“串首 + 39”這個(gè)位置開(kāi)始打印。這是從原本的逗號(hào)后面開(kāi)始打印,也就是跳過(guò)了前面寫(xiě)入的那個(gè) '\0'。這樣 puts 就從這里開(kāi)始一直打印到原字符串的末尾。
那么關(guān)于你最后的問(wèn)題
“fit將39后面的全部\0”:
你指的是這句 fit(msg, 38) 嗎??? 這并不是把第39個(gè)字符后面全部寫(xiě) '\0' 啊! 這只是把第39個(gè)字符改為 '\0'。這對(duì)字符串的影響我在上面已經(jīng)說(shuō)過(guò)了。
“puts(mesg+8)可以打印出緩存中的內(nèi)容嗎”:
為什么要問(wèn) +8 ??? 這當(dāng)然能打印字符串。只不過(guò)是從 mesg 的“串首 + 8”這個(gè)位置(也就是第9個(gè)字符)開(kāi)始打印。當(dāng)然仍然是打印到 '\0' 為止,不管這個(gè) '\0' 是不是在原本字符串的真正末尾。
- 1 回答
- 0 關(guān)注
- 1321 瀏覽
添加回答
舉報(bào)