文字列をトークンに分割しようとしていますが、やや再帰的です。私は解析しようとしています:sscanfを使用してC文字列をトークンに分割します。
"content=0&website=Google"
私はパラメータと値を取り出す方法があります。私が試してみたらstrtok
私は2回解析したい文字列を破壊してしまいます。だから私は再びarg
を解析することを望んで、最初のパスとして
char *contents = "content=0&website=Google"
char arg[100];
char value[100];
sscanf(contents, "%s&%s", arg, value);
を試してみましたが、それは失敗し、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
'strchr()'を試すことができます。 –
@ S.O users私はこれを知っていることがとても良い質問です。他の方法を予測することに加えて、誰かがなぜsscanf(内容、 "%s&%s"、arg、value)を理由づけた方が良いでしょう。 does not work –