我想在我的字符串与多个字符替换某个字符。这是我正在尝试做的一个例子。
说我有字符串“aaabaa”
我想替换字母“b”,5个“C”的所有事件。
所以,当我完成后, “aaabaa” 变成 “aaacccccaa”
我写了下面的代码:
#include <stdio.h>
#include <string.h>
int main(void)
{
char s[20] = "aaabaa";
int i, j;
for (i=0; s[i]!= '\0'; i++)
{
if (s[i] == 'b')
{
for (j=0; j<5; j++)
{
s[i+j] = 'c';
}
}
}
printf("%s\n", s);
}
我从这个函数输出为 “aaaccccc”。看来它只是用c's覆盖最后两个a。我有没有办法让这些最后几个不会被覆盖?
你需要['的memmove()'](http://www.cplusplus.com/reference/clibrary/cstring/memmove/) –
只是让了一下假设*字符串中的每个*字符都是'b'...您的目标缓冲区最好比调用时占用它的字符串长5倍。至少如果你想这样做* in-place *你*需要*编码算法来说明正在进行替换的内容占用的* buffer *的大小(不仅仅是字符串)。不这样做最终是一场灾难。 – WhozCraig