strtok で最初の一語を取得 ― 2013年02月06日 14時09分43秒
% cat sentence.c
#include <string.h>
#include <stdio.h>
int main()
{
char sentence[] = "This is a pen";
strtok( sentence, " " );
puts( sentence );
}
% CC sentence.c
% ./a.out
This
strtok は基本的に文字列を区切りたいときに使い、その戻り値を使うのが定石。そんなに使いやすい関数ではないが、C ライブラリにも長年あるので、ちょっと使いたいときに便利。
sentence を表示しているが、strtok の副作用で、最初の空白で切れるために、最初の単語のみを切り出すことになる。
分りづらかった理由の一つが、戻り値を使わないこと。なぜ、唐突に strtok と不思議に思っていた。
そして、その分りづらさに更に一捻り加えたのがその入力値。ほぼ全ての値が元々、一単語なのだ。今まで見てきた全ての場合が一単語。ちょっと変わった場合を試して、初めて二単語のケースに遭遇した。その結果を見てやっとその意図が汲めた。
関数を本来の目的とは異なった事に用いて、その副作用だけを活用する、とても悪い関数の使い方の例。
最近のコメント