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

看板C_and_CPP作者 (yorker)時間9年前 (2016/05/16 22:36), 9年前編輯推噓3(3011)
留言14則, 7人參與, 最新討論串1/1
如題 假設有 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

05/16 22:57, , 1F
這個例子不會造成越界存取嗎?
05/16 22:57, 1F
什麼是越界存取QQ 我蔡b8

05/16 23:42, , 2F
所以簡單來說,就是你要把一段字串裡的A字串改成B字串?
05/16 23:42, 2F

05/16 23:43, , 3F
如果是這樣,那你要先考慮原本字串大小的問題
05/16 23:43, 3F

05/16 23:44, , 4F
如果原字串太小,那到時候replace時,就會有未定義行為
05/16 23:44, 4F

05/16 23:45, , 5F
用 c 太難了
05/16 23:45, 5F
我才大一只學過c哈哈

05/16 23:50, , 6F
如果你連array的範圍都沒概念的話就很難說了orz
05/16 23:50, 6F
大概知道你的意思了 超過宣告的大小吼QQ 我自己做到往左位移那裡都ok 往右位移我是從結束字元的上一個開始往前更改 這裡編譯的過但是執行不了 應該到這裡都還沒有所謂越界存取的問題QQ

05/17 01:24, , 7F
編譯不過這個不是compiler會跟你說message嗎?不至於
05/17 01:24, 7F

05/17 01:24, , 8F
不知道錯在哪裡
05/17 01:24, 8F
編譯的過 但執行不了XDD ※ 編輯: Neverfor (223.141.99.132), 05/17/2016 11:55:10

05/17 12:22, , 9F
可短不可長,長了你就只好產生加長的陣列把原來的陣列
05/17 12:22, 9F

05/17 12:23, , 10F
指標蓋掉。如果原始陣列不准改,那便無解。
05/17 12:23, 10F

05/17 12:24, , 11F
這也是C的字串不好用的地方 但若不是非要在原來陣列內
05/17 12:24, 11F

05/17 12:24, , 12F
更改 那也還好 實用上也是如此
05/17 12:24, 12F

05/17 23:07, , 13F
一個疑問... 不考慮用 string.h 嗎 ??
05/17 23:07, 13F

05/23 23:04, , 14F
十三戒先看一下
05/23 23:04, 14F
文章代碼(AID): #1NEThI9M (C_and_CPP)