C言語では他の言語のように文字列の長さを取得する「length」のようなプロパティを持っていません。
C言語の文字列はchar型の配列なので、配列のサイズを知る方法もないので、変数から直接長さを取得することはできません。
この記事では、C言語の正しい文字列の長さを知る方法を紹介します。
文字列の長さを知る方法
C言語で文字列の長さを知るには、標準関数のstrlen関数を使用します。
strlen関数は引数に長さを知りたい文字列変数を指定し、戻り値として文字列長を返します。
1 2 3 4 |
// 文字列長を知りたい変数 char s1[] = "hogehogehoge"; // 文字列長取得 int len = strlen(s1); |
strlen関数では引数の終端文字の位置を探して返すため、引数に終端文字が存在しない場合動作未定義となります。
strlen関数を自作
strlen関数の使い方がわかったところで、挙動のさらなる理解を深めるためにstrlen関数を自作してみます。
先述した通りstrlen関数は引数の先頭から走査して終端文字が見つかった位置を返します。
- 引数を先頭から走査
- 終端文字でなければカウンタをインクリメント
- 終端文字なら終了
1 2 3 4 5 6 7 8 9 10 |
// 自作strlen int my_strlen(const char* s) { // ループ変数(かつカウンタ) int i = 0; // 先頭から終端文字が見つかるまで走査 for(; s[i] != '\0'; i++); // カウンタを返却 return i; } |