以下代码将使用空格(即“”)和句号(即“.”)来分解字符串命令。如果我想使用空格和句号(同时)的出现来分解命令,而不是单独使用它们,例如,该怎么办?像这样的命令:“hello .how are you”将被分成几部分(忽略引号) [你好] [你今天怎么样]
char *token2 = strtok(command, " .");
最佳答案
您可以使用 strstr
轻松完成此操作:
char *strstrtok(char *str, char *delim)
{
static char *prev;
if (!str) str = prev;
if (str) {
char *end = strstr(str, delim);
if (end) {
prev = end + strlen(delim);
*end = 0;
} else {
prev = 0;
}
}
return str;
}
这与 strtok
的实现几乎完全相同,只需调用 strstr
和strlen
而不是strcspn
和strspn
。它还可能返回空标记(如果有两个连续的分隔符或两端各有一个分隔符);如果您愿意,可以安排忽略这些内容。
关于c - C 中的字符串分词器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7136528/