У меня есть строка "{" 1 ":" [4,11,14,19,20,18,27] "}".Я хочу изменить его на "{\" 1 \ ": \" 4,11,14,19,20,18,27 \ "}".
Ниже мой код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *replace (char *this, char *withthat, char *inthis) {
char *where = inthis;
while ((where = strstr(where, this))) {
memcpy(where, withthat, strlen(withthat));
memmove(where+strlen(withthat),where+strlen(this), strlen(where+strlen(this))+1);
}
return inthis;
}
int main(void) {
char string[] = "{"1":"[4,11,14,19,20,18,27]"}";
printf("%s\n", replace(""", "\\\"", string));
printf("%s\n", replace("\"[" , "\"", string));
printf("%s\n", replace("]\\" , "\\", string));
printf("%s\n", replace("{" , "\"{", string));
printf("%s\n", replace("}" , "}\"", string));
return 0;
}
Я получаю ошибку за последние два вызова замены.Мой o / p - {\ "1 \": \ "[4,11,14,19,20,18,27] \"} {\ "1 \": \ "4,11,14,19,20, 18,27] \ "} {\" 1 \ ": \" 4,11,14,19,20,18,27 \ "} Ошибка сегментации
Я пытался выполнить GDB, но не смогнайти основную причину ошибки.это как-то связано с memcopy, но не в состоянии понять.Если кто-нибудь может мне помочь, было бы здорово.Заранее спасибо.