鉴于以下内容:
char delimiters1[] = {' ' , '&' , '<' , '>'};
char delimiters2[] = " &<>";
如果我将C
函数strpbrk
与delimiters1
和delimiters2
一起使用,结果会是一样的吗?
我用20个输入测试了它们,我得到了两个相同的输出。
我错了吗?
谢谢。
答案 0 :(得分:2)
char delimiters1[] = {' ' , '&' , '<' , '>'};
应该是:
char delimiters1[] = {' ' , '&' , '<' , '>', 0};
它可能会工作几次。但刺痛应该是空终止的。否则,strpbrk将如何知道要搜索的字符的结束?
这是strbrk()的片段:
while (*s1)
{
for (c = s2; *c; c++)
{
if (*s1 == *c)
break;
}
if (*c)
break;
s1++;
}
其中c是指向char-set的指针。正如您可以清楚地看到,在某些时候*c
应为null,以使程序正常工作。