如何在C中找到非字母数字

我试图从C.shis中的字符串中分离非字母数字和字母数字。这是我当前的代码,但如果我使用它,它将仅检测所有字母数字,而在非字母数字时它将返回null。所以我无法检测到什么index是所有非字母数字的。

char data[] = "http://www.google.com"; char key[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; char *find; find = strpbrk(data,key); while(find != NULL){ printf("%c",*find); find = strpbrk(find+1,key); } 

输出将是httpwwwgooglecom.Thats是我部分想要的。 我也试图找到所有非字母数字的位置。

看看C isalpha的一系列例程。

有时候,自己做这项工作会更容易。 是的,对于A-Za-z0-9的特定情况,您应该使用isalnum()而不是strchr()。

 for(c=data;*c;c++) { if (!strchr(key,*c)) { // Do something with non-alpha } else { printf("%c",*c); } }