0

次のことを考えると:

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


char delimiters2[] =  " &<>";

Cとで関数strpbrkを使用するdelimiters1delimiters2、結果は同じになりますか?

20の入力のようなもので両方をテストしましたが、両方で同じ出力が得られました。

私が間違っている ?

ありがとう 。

4

1 に答える 1

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

する必要があります:

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

数回動作する場合があります。ただし、スティングはnullで終了する必要があります。それ以外の場合、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 に答える