这里有一个 C 语言字符串查找和替换的函数,你可能会觉得有用。可以在这里找到。
编辑:根据评论请求,下面包含链接中的代码片段。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *replace(const char *src, const char *from, const char *to)
{
size_t size = strlen(src) + 1;
size_t fromlen = strlen(from);
size_t tolen = strlen(to);
char *value = malloc(size);
char *dst = value;
if ( value != NULL )
{
for ( ;; )
{
const char *match = strstr(src, from);
if ( match != NULL )
{
size_t count = match - src;
char *temp;
size += tolen - fromlen;
temp = realloc(value, size);
if ( temp == NULL )
{
free(value);
return NULL;
}
dst = temp + (dst - value);
value = temp;
memmove(dst, src, count);
src += count;
dst += count;
memmove(dst, to, tolen);
src += fromlen;
dst += tolen;
}
else
{
strcpy(dst, src);
break;
}
}
}
return value;
}
void test(const char *source, const char *search, const char *repl)
{
char *after;
after = replace(source, search, repl);
printf("\nsearch = \"%s\", repl = \"%s\"\n", search, repl);
if ( after != NULL )
{
printf("after = \"%s\"\n", after);
free(after);
}
}
int main(void)
{
const char before[] = "the rain in Spain falls mainly on the plain";
printf("before = \"%s\"\n", before);
test(before, "the", "THEE");
test(before, "the", "A");
test(before, "cat", "DOG");
test(before, "plain", "PLANE");
test(before, "ain", "AINLY");
return 0;
}
希望这能帮到你。