看板 C_and_CPP 關於我們 聯絡資訊
如題 假設有 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