0

鉴于以下情况:

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


char delimiters2[] =  " &<>";

如果我将C函数strpbrkdelimiters1and一起使用delimiters2,结果会相同吗?

我已经用 20 个输入对它们进行了测试,并且得到了相同的输出。

我错了吗 ?

谢谢 。

4

1 回答 1

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

于 2012-05-24T11:26:51.180 回答