[爆卦]C 修改 字串是什麼?優點缺點精華區懶人包

為什麼這篇C 修改 字串鄉民發文收入到精華區:因為在C 修改 字串這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者Neverfor (yorker)看板C_and_CPP標題[問題]C語言如何更改字串中的字串時...


如題

假設有

char str1[]="I am a student";
char str2[]="student";
char str3[]="hamburger";


想要把"I am a student"

改成 "I am a hamburger"

我有寫出

1.找到student的s的index的自訂函數,假設此函數return為pos。
2.欲取代字串之長度的函數,假設return
為replacement_length
3.原字串長度的函數,假設return
為length


那要如何用 pos str2 str1 length_和replacement_length用一個自定義函數replace更
改str1中的指定的str2為str3呢

字數一樣的很好改 但字數不一樣就要牽扯到位移方面的問題

麻煩各位大大了><
可以給個小暗示嗎QQ

我自己是想在自定義函數裡先刪掉 student (也就是從pos往左位移length)然後往右位移
replacement_length
再在pos補str3


補程式碼
http://codepad.org/qku4yiMd

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.83.155.11
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1463409362.A.256.html
james732: 這個例子不會造成越界存取嗎?05/16 22:57
什麼是越界存取QQ
我蔡b8
Caesar08: 所以簡單來說,就是你要把一段字串裡的A字串改成B字串?05/16 23:42
Caesar08: 如果是這樣,那你要先考慮原本字串大小的問題05/16 23:43
Caesar08: 如果原字串太小,那到時候replace時,就會有未定義行為05/16 23:44
descent: 用 c 太難了05/16 23:45
我才大一只學過c哈哈
james732: 如果你連array的範圍都沒概念的話就很難說了orz05/16 23:50
大概知道你的意思了 超過宣告的大小吼QQ

我自己做到往左位移那裡都ok
往右位移我是從結束字元的上一個開始往前更改 這裡編譯的過但是執行不了
應該到這裡都還沒有所謂越界存取的問題QQ
phishingphi: 編譯不過這個不是compiler會跟你說message嗎?不至於05/17 01:24
phishingphi: 不知道錯在哪裡05/17 01:24
編譯的過 但執行不了XDD
※ 編輯: Neverfor (223.141.99.132), 05/17/2016 11:55:10
MOONRAKER: 可短不可長,長了你就只好產生加長的陣列把原來的陣列 05/17 12:22
MOONRAKER: 指標蓋掉。如果原始陣列不准改,那便無解。 05/17 12:23
MOONRAKER: 這也是C的字串不好用的地方 但若不是非要在原來陣列內 05/17 12:24
MOONRAKER: 更改 那也還好 實用上也是如此 05/17 12:24
EdisonX: 一個疑問... 不考慮用 string.h 嗎 ?? 05/17 23:07
sss22213: 十三戒先看一下 05/23 23:04

你可能也想看看

搜尋相關網站