如何在C中按'&'
将字符串拆分为标记?
答案 0 :(得分:13)
char *token;
char *state;
for (token = strtok_r(input, "&", &state);
token != NULL;
token = strtok_r(NULL, "&", &state))
{
...
}
答案 1 :(得分:8)
我会这样做(使用strchr()
):
#include <string.h>
char *data = "this&&that&other";
char *next;
char *curr = data;
while ((next = strchr(curr, '&')) != NULL) {
/* process curr to next-1 */
curr = next + 1;
}
/* process the remaining string (the last token) */
strchr(const char *s, int c)
会返回指向c
中s
的下一个位置的指针,如果NULL
中找不到c
,则返回s
您可以使用strtok()
,但我不喜欢strtok()
,因为:
"a&&b&c"
,则返回的代码为"a"
,"b"
和"c"
。请注意,"a"
后没有空令牌。答案 2 :(得分:2)
您可以使用strok()函数,如下例所示。
/// Function to parse a string in separate tokens
int parse_string(char pInputString[MAX_STRING_LENGTH],char *Delimiter,
char *pToken[MAX_TOKENS])
{
int i;
i = 0;
pToken[i] = strtok(pInputString, Delimiter);
i++;
while ((pToken[i] = strtok(NULL, Delimiter)) != NULL){
i++;
}
return i;
}
/// The array pTokens[] now contains the pointers to the start of each token in the (unchanged) original string.
sprintf(String,"Token1&Token2");
NrOfParameters = parse_string(String,"&",pTokens);
sprintf("%s, %s",pToken[0],pToken[1]);