[問題]C語言如何更改字串中的字串

作者: Neverfor (八卦蟑螂)   2016-05-16 22:36:00
如題
假設有
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
作者: james732 (好人超)   2016-05-16 22:57:00
這個例子不會造成越界存取嗎?
作者: Caesar08 (Caesar)   2016-05-16 23:42:00
所以簡單來說,就是你要把一段字串裡的A字串改成B字串?如果是這樣,那你要先考慮原本字串大小的問題如果原字串太小,那到時候replace時,就會有未定義行為
作者: descent (「雄辯是銀,沉默是金」)   2016-05-16 23:45:00
用 c 太難了
作者: james732 (好人超)   2016-05-16 23:50:00
如果你連array的範圍都沒概念的話就很難說了orz
作者: phishingphi (hsnutontu)   2016-05-17 01:24:00
編譯不過這個不是compiler會跟你說message嗎?不至於不知道錯在哪裡
作者: MOONRAKER (㊣牛鶴鰻毛人)   2016-05-17 12:22:00
可短不可長,長了你就只好產生加長的陣列把原來的陣列指標蓋掉。如果原始陣列不准改,那便無解。這也是C的字串不好用的地方 但若不是非要在原來陣列內更改 那也還好 實用上也是如此
作者: EdisonX (卡卡獸)   2016-05-17 23:07:00
一個疑問... 不考慮用 string.h 嗎 ??
作者: sss22213 (sss22213)   2016-05-23 23:04:00
十三戒先看一下

Links booklink

Contact Us: admin [ a t ] ucptt.com