C 输出乱码
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <stdarg.h>char * FormatString(char *fmt,...){ char *data = (char *)malloc(strlen(fmt) + 1); char *p; char c; int i = 0; int j = 0; va_list list; va_start(list,fmt); memset(data, '\0', strlen(data)); while((c=*fmt)) { if(*fmt == '%') { ++fmt; switch(*fmt) { case 's': p = va_arg(list, char *); data=(char *)realloc(data, strlen(data) +strlen(p) + 1); for(j=0;j<(int)strlen(p);j++) { data[i]=p[j]; i++; } break; } } else { data[i]=*fmt; i++; } fmt++; } data[i]='\0'; va_end(list); return data;}int main(){ printf("%s\n", FormatString("{\"%s\":\"%s\"}","1","nihao")); return 0;}