我想通过索引替换字符串。 x
和y
之间的字符串。如果将被替换的字符串长度小于y
,指针必须增加差异。例如取代索引
给定字符串([10 20]...[10 20]..[30 80])
; x = 1
(索引[
)和y = 7
(索引]
),并且字符串替换为50
,则必须将其替换为(50...[10 20]..[30 80])
。
我已经试过了:
void replaceindex(char *s, char *replace, unsigned int start, unsigned int end)
{
assert(start < end);
char *p = s, *q = s, *r = replace;
register unsigned int i = 0;
int found = 0;
while(*q) {
if(found == 0 && i == start) {
found = 1;
for(; *r; ++r, ++start, ++q)
*p ++ = *r;
while(++start < end)
q++;
}
*p ++ = *q ++;
i ++;
}
}
使用:
char str[] = "([10 20]...[10 20]..[30 80])";
printf("Before: %s\n", str);
replaceindex(str, "50", 1, 7);
printf("After: %s\n", str);
输出是:
Before: ([10 20]...[10 20]..[30 80])
After: (500]...[10 20]..[30 80])0])
但我很期待这样的:
Before: ([10 20]...[10 20]..[30 80])
After: (50...[10 20]..[30 80])
如何解决这个问题?
任何帮助和解决方案,不胜感激!提前致谢。
你不要指望括号的层次,你呢? – 2012-08-07 19:54:51
@ H2CO3:我不是。 – Jack 2012-08-07 20:53:38