作者Neverfor (yorker)
看板C_and_CPP
标题[问题]C语言如何更改字串中的字串
时间Mon May 16 22:36:00 2016
如题
假设有
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://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1463409362.A.256.html
1F:推 james732: 这个例子不会造成越界存取吗?05/16 22:57
什麽是越界存取QQ
我蔡b8
2F:→ Caesar08: 所以简单来说,就是你要把一段字串里的A字串改成B字串?05/16 23:42
3F:→ Caesar08: 如果是这样,那你要先考虑原本字串大小的问题05/16 23:43
4F:→ Caesar08: 如果原字串太小,那到时候replace时,就会有未定义行为05/16 23:44
5F:→ descent: 用 c 太难了05/16 23:45
我才大一只学过c哈哈
6F:→ james732: 如果你连array的范围都没概念的话就很难说了orz05/16 23:50
大概知道你的意思了 超过宣告的大小吼QQ
我自己做到往左位移那里都ok
往右位移我是从结束字元的上一个开始往前更改 这里编译的过但是执行不了
应该到这里都还没有所谓越界存取的问题QQ
7F:→ phishingphi: 编译不过这个不是compiler会跟你说message吗?不至於05/17 01:24
8F:→ phishingphi: 不知道错在哪里05/17 01:24
编译的过 但执行不了XDD
※ 编辑: Neverfor (223.141.99.132), 05/17/2016 11:55:10
9F:→ MOONRAKER: 可短不可长,长了你就只好产生加长的阵列把原来的阵列 05/17 12:22
10F:→ MOONRAKER: 指标盖掉。如果原始阵列不准改,那便无解。 05/17 12:23
11F:→ MOONRAKER: 这也是C的字串不好用的地方 但若不是非要在原来阵列内 05/17 12:24
12F:→ MOONRAKER: 更改 那也还好 实用上也是如此 05/17 12:24
13F:推 EdisonX: 一个疑问... 不考虑用 string.h 吗 ?? 05/17 23:07
14F:推 sss22213: 十三戒先看一下 05/23 23:04