我正在尝试使用所有非字母字符作为分隔符来标记字符串。
我有一行指定:
char delimiters[] = "1234567890-=!@#$%^&*()_+[]\;',./{}|:"<>?"
但我很确定这不是有效的代码。任何帮助是极大的赞赏。感谢。
答案 0 :(得分:2)
使用标准库对字符串进行标记可以使用strtok
完成。它有一种特殊的方式可以调用它:在第一次调用时,传入输入字符串和分隔符,strtok
返回第一个标记。之后,每当您使用strtok
调用NULL
并将分隔符作为参数时,您将获得后续令牌。
Consult a reference了解更多信息。下面的代码示例基于链接网站上的代码示例。
正如所说,你必须使用"
和\
来逃避\"
和\\
个字符。
/* strtok example */
#include <stdio.h>
#include <string.h>
int main ()
{
char str[] ="This is a sample string: name@example.com";
const char delimiters[] = "1234567890-=!@#$%^&*()_+[]\\;',./{}|:\"<>?"
char * pch;
printf ("Splitting string \"%s\" into tokens:\n",str);
pch = strtok (str, delimiters);
while (pch != NULL)
{
// pch now point to a token in your string
printf ("%s\n",pch);
pch = strtok (NULL, delimiters);
}
return 0;
}
答案 1 :(得分:1)
您需要使用"
转义\
和\
:
const char delimiters[] = "1234567890-=!@#$%^&*()_+[]\\;',./{}|:\"<>?"
但是,如果您真的想要匹配“所有非字母字符”(在这种情况下,您的字符列表严重不足),您应该使用内置的C函数,例如isalpha
。