我試圖將字符串拆分爲令牌,但有點遞歸。我試圖解析:使用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