C言語の標準関数には、文字列の長さを求めるstrlen関数があります。strlen関数を使うにはプログラムの先頭で、
#include <string.h>
n = strlen(word);
と使用することで、nに文字列 wordの長さ(wordのヌル文字を含まない文字数)を求めることができます。
実はstrlen関数はC言語で書くことができて、
size_t strlen (const char *str) { const char *p; for (p = str; *p != '¥0'; p++) ; return p - str; }
のように、簡単に自分で作れます。
for (p = str; *p != '¥0'; p++) ;
では、最初pは文字列の先頭を指し、終わりのヌル文字が見つかるまでpを次の文字に進めています。このfor文のループ本体(繰り返し実行される処理)は空文(;)なので何も処理しません。ただ、文字列の終わりまでpを進める処理を行います。
return p - str;
で、文字列の終わりのpから先頭のstrを引いて、文字列の長さを返すのです。
const char *p;
のconstは、その値を変えられない意味で、型修飾子の1つです。
値を変えられないのは*pで、誤ってプログラムを
*p = '¥0';
などと書いてしまうと、Cコンパイラはエラーと判定します。
Copyright © ITmedia, Inc. All Rights Reserved.