我正在尝试在C语言中解析URL查询字符串,不知道如何优雅地实现。如果有任何提示或建议,将不胜感激:
我一直遇到的问题是,由于
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循环中断。