在c語言中,json字符串替換是一個常見的需求。JSON是一種輕量級的數據交換格式,常用于前后端數據傳輸。它的語法類似于JavaScript語法。
下面是一個C語言中替換JSON字符串的代碼例子:
#include#include int main() { char json_string[] = "{\n\"name\":\"Tom\",\n\"age\":18,\n\"address\":\"New York\"\n}"; printf("原始json字符串:\n%s\n\n", json_string); //輸出原字符串 char *name = "Mary"; char *ret = strstr(json_string, "\"name\""); //查找name字段 if (ret != NULL) //如果找到了name字段 { char *start = ret + strlen("\"name\":"); //name字段值的起始位置 char *end = strchr(start, ','); //name字段值的結束位置 if (end != NULL) //如果找到了name字段的結束位置 { int length = end - start; //name字段值的長度 char new_string[1000]; char *pattern = "\"Tom\""; //需要替換的字符串 int pattern_length = strlen(pattern); int new_length = strlen(name); if (new_length >pattern_length) //如果需要替換的字符串比原字符串長 { int extra = new_length - pattern_length; //計算字符串長度差值 snprintf(new_string, sizeof(new_string), "%s", name); strcat(new_string, end); memmove(start + new_length, end, strlen(end) + 1); memcpy(start, new_string, strlen(name)); json_string[strlen(json_string) - pattern_length + new_length] = '\0'; } else //如果需要替換的字符串比原字符串短或相等 { memcpy(start, name, new_length); memmove(start + new_length, end, strlen(end) + 1); json_string[strlen(json_string) - pattern_length + new_length] = '\0'; } printf("替換后的json字符串為:\n%s\n\n", json_string); //輸出替換后的字符串 } } return 0; }
以上代碼實現了查找并替換JSON字符串中的指定字段值。代碼包括注釋,可自行進行修改和學習。