带有strpbrk的c中的字符和字符串

时间:2012-05-24 11:16:33

标签: c string

鉴于以下内容:

char delimiters1[] = {' ' , '&' , '<' , '>'};


char delimiters2[] =  " &<>";

如果我将C函数strpbrkdelimiters1delimiters2一起使用,结果会是一样的吗?

我用20个输入测试了它们,我得到了两个相同的输出。

我错了吗?

谢谢。

1 个答案:

答案 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,以使程序正常工作。