Элегантный анализ строки запроса на языке C

Я пытаюсь разобрать строку запроса URL на C и не понимаю, как это сделать. Буду признателен за любые подсказки или предложения:

static void readParams(char * string, char * param, char * value) {
    char arg[100] = {0};  // Not elegant, brittle
    char value2[1024] = {0};

    sscanf(string, "%[^=]=%s", arg, value2);
    strcpy(param, arg);
    strcpy(value, value2);
}
char * contents = "username=ted&age=25";
char * splitted = strtok (contents,"&");
char * username;
char * age;

while (splitted != NULL)
{
    char param[100]; // Not elegant, brittle
    char value[100];
    char * t_str = strdup(splitted);
    readParams(t_str, param, value);
    if (strcmp(param, "username") == 0) {
        username = strdup(value);
    }
    if (strcmp(param, "age") == 0) {
        age = strdup(value); // This is a string, can do atoi
    }
   splitted = strtok (NULL, "&");
 }

Проблема, с которой я постоянно сталкивался, заключается в том, что из-за функции strtokвсе, что казалось более разумным, нужно делать до последней strtokфункция, похоже, нарушила цикл while.

7
задан Rio 12 March 2012 в 03:45
поделиться