我试图将字符串拆分为令牌,但有点递归。我试图解析:使用sscanf将C字符串拆分为令牌
"content=0&website=Google"
这样我就有办法取出参数和值。如果我尝试strtok
我最终破坏了我想解析两次的字符串。所以,我想
char *contents = "content=0&website=Google"
char arg[100];
char value[100];
sscanf(contents, "%s&%s", arg, value);
在第一遍,希望再次解析arg
,但它失败,arg
包含整个字符串。我尝试使用"%s\&%s"
思想&
是一个保留字,但没有运气。
帮助!
编辑:
这是我的strtok黑客:
static void readParams(char * string, char * param, char * value) {
printf("This is the string %s\n",string);
char * splitted = strtok (string,"=");
while (splitted != NULL)
{
printf("This is the string %s\n",splitted);
splitted = strtok (NULL, "=");
// Then do some saving to param and value
}
}
char * splitted = strtok (contents,"&");
int counter = 0;
while (splitted != NULL)
{
char * t_str = strdup(splitted);
readParams(t_str, param, value);
splitted = strtok (NULL, "&");
}
,但它不工作,因为分裂的strtok
在年底成为gobbldygook。
使保存的字符串的副本,你叫'的strtok(前)'。 – Duck 2012-03-06 05:59:20
你可以试试'strchr()'。 – 2012-03-06 06:00:21
@ S.O用户我认为这是一个非常好的问题。除了预测其他方法之外,如果有人推断为什么sscanf(内容,“%s&%s”,arg,value)会更好。不起作用 – 2012-03-06 06:26:09