次のことを考えると:
char delimiters1[] = {' ' , '&' , '<' , '>'};
char delimiters2[] = " &<>";
C
とで関数strpbrk
を使用するdelimiters1
とdelimiters2
、結果は同じになりますか?
20の入力のようなもので両方をテストしましたが、両方で同じ出力が得られました。
私が間違っている ?
ありがとう 。
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になるはずです。