【发布时间】:2011-11-21 20:29:50
【问题描述】:
我必须弄清楚我的主题字符串是否有任何坏字符(我绝对讨厌某些字符)。因此,如果我有一个名为 str(char *str) 的字符串,并且如果找到字符串 bad(char *bad) 中的任何字符,则字符串str 将被拒绝。现在我可以使用strcspn(str,bad) 来检查这一点。但是有人可以建议strcspn 的实现是什么吗?
一个简单的实现是检查str 的每个字符与bad 的每个字符,如果找到匹配项则拒绝str。
for(i=0;str[i]!='\0';i++)
for(j=0;bad[j]!='\0';j++)
if(bad[j]==str[i])
return -1; //reject string
return 1; //accept string
或类似的东西
for(i=0;str[i]!='\0';i++)
if(strchr(bad,str[i])) //will return non-NULL if str[i] is found in bad
return -1; //reject string
return 1; //accept string
【问题讨论】:
-
请注意,第一个sn-p的内部for循环中的条件应该是
bad[j]!='\0',而不是bad[j]='\0'。 -
@Tamás 谢谢。刚刚错过了!更正了。