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