请问这道题的思路应该是什么?

新手上路,请多包涵

配置解析及存储,给定一个字符串,里面为K,V的配置信息,请构造程序将其解析。
实例字符串为" abc =b\\n  ;c=\\x61d;d=234;t=\\n;d=\"test;yes\";"

阅读 1.9k
1 个回答
void GetKV(const char* data)
{
    // 对原始数据做一份拷贝
    char buffer[1024];
    strcpy(buffer, data);

    char key[256], value[256];
    bool ignore = false;

    char* bpos = buffer;
    for (char* pos = buffer; *pos; pos++) {
        if (*pos == '"')
            ignore = !ignore;

        if (!ignore && (*pos == '=')) {
            *pos = 0;
            strcpy(key, bpos);
            bpos = pos + 1;
        }

        if (!ignore && (*pos == ';')) {
            *pos = 0;
            strcpy(value, bpos);
            bpos = pos + 1;

            printf("%s=%s\n", key, value);
        }
    }
}

int main()
{
    const char* data = " abc =b\\n  ;c=\\x61d;d=234;t=\\n;d=\"test;yes\";";
    GetKV(data);

    return 0;
}

这题主要考的就是引号里面的=和;的处理

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进