我想通過索引替換字符串。 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