如何使用c或python将CHAR(“)添加到字符串?

时间:2015-12-09 11:40:25

标签: json

现在我有一个LIKE JSON(NOT JSON)字符串,它保存了文件:

{"content":["info":{"tid":(uint)123,"pid":(int)456}],"header":{"test":"hello"}}

为了比较两个带有python json的字符串,我需要格式化这个字符串,因为它使用python json解码错误,如果(unit)123"(uint)123",它可以正确运行。现在我用c编写代码,吼叫:

void dofile(char *filename)
{
    FILE *f;
    long len;
    char *data;
    char *head;
    char *ptr;
    char *value;
    f=fopen(filename,"rb");
    fseek(f,0,SEEK_END);
    len=ftell(f);
    fseek(f,0,SEEK_SET);
    data=(char*)malloc(len+1);
    fread(data,1,len,f);
    data[len]='\0';
    fclose(f);
    head = data;
    ptr = data;
    while (*ptr)
    {
        if (*ptr++ == '\\')
            continue;
        int l = 1;
        if (*ptr=='\"' && *++ptr==':' && *++ptr=='(')
        {
            value = ptr;
            while (*ptr++ != ')' && *ptr && ++l)
                ;
            ptr++;
            len++;
            if (*ptr == '-') 
            {
                ptr++;
                l++;
            }
            while(*ptr >= '0' && *ptr <= '9' && *ptr && ++l)
            {
                ptr++;
            }
            char *tmp = (char*)malloc(len+2);
            memcpy(tmp, head, value-head);
            memset(tmp+(value-head), '\"', 1);
            memcpy(tmp+(value-head)+1, value, ptr-value);
            memset(tmp+(ptr-head)+1, '\"', 1);
            memcpy(tmp+(ptr-head)+2, ptr, len-(ptr-head));
            len += 2;
            ptr = tmp + (ptr-head)+2;
            free(data);
            data = tmp;
            head = data;
        }
    }
    f = fopen(filename, "wb");
    fwrite(data, len-1, 1, f);
    fclose(f);
    printf("%s\n", data);
    free(data);
}

好的,没关系,但有问题吗?因为我认为我使用了许多mem函数。

0 个答案:

没有答案