如何在C中将字符串拆分为标记?

trr*_*rrm 7 c split token

如何'&'在C中将字符串拆分为标记?

R S*_*hko 13

strtok/strtok_r

char *token;
char *state;

for (token = strtok_r(input, "&", &state);
     token != NULL;
     token = strtok_r(NULL, "&", &state))
{
    ...
}
Run Code Online (Sandbox Code Playgroud)


Alo*_*hal 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) */
Run Code Online (Sandbox Code Playgroud)

strchr(const char *s, int c)返回指向cin 的下一个位置的指针s,或者NULL如果c未找到,则返回指针s.

strtok()但是,您可以使用我不喜欢的strtok(),因为:

  • 它修改了被标记化的字符串,因此它不适用于文字字符串,或者在您希望将字符串保留用于其他目的时不是非常有用.在这种情况下,您必须先将字符串复制到临时字符串.
  • 它合并相邻的分隔符,所以如果你的字符串是"a&&b&c",返回的令牌"a","b""c".请注意,之后没有空令牌"a".
  • 它不是线程安全的.