連載
» 2014年10月17日 11時00分 公開

完全マスター! 組み込みC言語プログラミング(12):【問題11】文字列の長さと文字種類の判別 (2/4)

[横田一弘 埼玉県立新座総合技術高等学校 教諭,MONOist]

文字列の長さを求める

 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.