C言語のstrlen関数の使い方を完全解説!初心者でもわかる文字列の長さ取得方法
生徒
「C言語で文字の数を数える方法ってありますか?例えば、helloが何文字か知りたいです。」
先生
「ありますよ。C言語ではstrlen関数を使うと、文字列の長さを簡単に取得できます。」
生徒
「文字列の長さって、コンピュータは自動で数えてくれるんですか?」
先生
「strlen関数が、文字列の先頭から順番に調べて文字数を数えてくれます。」
生徒
「それは便利ですね!どうやって使うんですか?」
先生
「それでは、C言語の文字列操作でよく使うstrlen関数の使い方を、初心者向けにゆっくり解説していきましょう。」
1. C言語のstrlen関数とは?
strlen関数とは、C言語で文字列の長さ(文字数)を取得するための関数です。C言語で文字列を扱うときには非常によく使われる基本的な関数です。
プログラムを書くときには、「この文字は何文字あるのか?」を知りたい場面がよくあります。例えば次のようなケースです。
- 入力された名前の文字数を調べる
- パスワードの文字数を確認する
- 文章の長さをチェックする
このようなときに便利なのがstrlen関数です。
イメージとしては、文章の文字数を数えるときに、指で一文字ずつ数えていく作業と似ています。strlen関数はコンピュータが自動でそれを行ってくれる便利な機能です。
2. strlen関数を使うために必要な準備
strlen関数を使うためには、まずstring.hというライブラリを読み込む必要があります。
ライブラリとは、よく使う便利な機能をまとめた部品のようなものです。料理で例えると、すでに作られている調味料のような存在です。自分で作らなくても簡単に使うことができます。
strlen関数の基本の書き方は次のようになります。
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "hello";
int length = strlen(str);
printf("文字列の長さは %d です\n", length);
return 0;
}
このプログラムでは、helloという文字列の長さをstrlen関数で調べています。
strlen関数の結果はint型の変数に保存されます。int型とは整数を扱うデータ型のことです。
文字列の長さは 5 です
3. strlen関数の仕組み
C言語の文字列には、実は終わりを表す特別な文字が存在します。それがヌル文字と呼ばれるものです。
ヌル文字とは、文字列の終わりを示す目印で、\0と書きます。
例えば、helloという文字列はコンピュータの内部では次のように保存されています。
h → e → l → l → o → \0
strlen関数は、このヌル文字が出てくるまで一文字ずつ数えていきます。そしてヌル文字の手前までを文字数として返します。
つまり、strlen関数は文字列の終わりを見つけるまで文字数を数える関数なのです。
4. 日本語文字列でstrlenを使う場合
初心者の方がよく疑問に思うのが、日本語の文字数です。
例えば次のプログラムを見てみましょう。
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "こんにちは";
printf("文字数は %d です\n", strlen(str));
return 0;
}
日本語の場合、環境によっては1文字が複数バイトで保存されることがあります。そのため、strlen関数は文字数ではなくバイト数を返すことがあります。
初心者の段階では、strlenはデータの長さを調べる関数と理解しておくと分かりやすいでしょう。
文字数は 15 です
5. strlen関数とif文を組み合わせる
strlen関数は、条件分岐と組み合わせると非常に便利です。
例えば、文字列が空かどうかを確認することができます。
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "";
if(strlen(str) == 0)
{
printf("文字列は空です\n");
}
else
{
printf("文字が入力されています\n");
}
return 0;
}
文字列は空です
このようにstrlen関数を使うことで、文字列が入力されているかどうかを簡単にチェックできます。
6. strlen関数を使った文字列比較の例
strlen関数は、文字列の長さを比較する処理でもよく使われます。
例えば、どちらの文字列が長いかを調べることができます。
#include <stdio.h>
#include <string.h>
int main()
{
char str1[] = "apple";
char str2[] = "banana";
if(strlen(str1) > strlen(str2))
{
printf("str1の方が長いです\n");
}
else
{
printf("str2の方が長いです\n");
}
return 0;
}
str2の方が長いです
このように、strlen関数を使えば文字列のサイズを簡単に比較できます。
7. strlen関数を使うときの注意点
strlen関数を使うときにはいくつか注意点があります。
- ヌル文字で終わっている文字列でなければならない
- 日本語では文字数と一致しないことがある
- char配列のサイズとは違う値になる場合がある
特に重要なのは、ヌル文字がない場合は正しく動かないという点です。C言語の文字列は必ず\0で終わる必要があります。
そのため、文字列操作を行うときは、常に文字列の終わりを意識することが大切です。
strlen関数はC言語の文字列操作の中でも非常によく使われる関数なので、基本的な使い方をしっかり覚えておくと、プログラムを書くときにとても役に立ちます。
まとめ
strlen関数の基本をもう一度整理しよう
この記事では、C言語で文字列の長さを取得するために使われる代表的な関数であるstrlen関数について、初心者向けにやさしく解説してきました。C言語でプログラミングを始めたばかりの人にとって、文字列の扱い方は少し難しく感じることがありますが、strlen関数を理解しておくことで文字列処理の基本がぐっと分かりやすくなります。
C言語では、文字列はchar型の配列として扱われます。そしてその文字列の最後には必ずヌル文字と呼ばれる終端記号が存在します。このヌル文字は「\0」と書かれ、文字列の終わりを示す特別な目印です。strlen関数は、このヌル文字が現れるまで一文字ずつ確認しながら数を数え、最終的に文字列の長さを返す仕組みになっています。
つまりstrlen関数とは、C言語の文字列の内部構造を利用して文字列の長さを取得する関数です。C言語の文字列操作では非常によく登場する関数であり、プログラムを書くうえで覚えておきたい基本関数のひとつです。
strlen関数を使うために必要なポイント
strlen関数を使うためには、まずstring.hという標準ライブラリを読み込む必要があります。C言語の標準ライブラリには、文字列処理に便利な関数が多数用意されており、その中のひとつがstrlen関数です。
#include <stdio.h>
#include <string.h>
int main()
{
char text[] = "programming";
int length = strlen(text);
printf("文字列の長さは %d です\n", length);
return 0;
}
文字列の長さは 11 です
このようにstrlen関数を使うことで、文字列の長さを簡単に取得することができます。ユーザー入力の文字数チェック、文章の長さ確認、パスワード文字数の検証など、実際のプログラムでも多くの場面で利用されます。
strlen関数はバイト数を返すことを理解しよう
初心者がよく混乱するポイントとして、日本語文字列があります。英語の文字列では一文字が一バイトで表現されることが多いため、strlen関数の結果は文字数と一致します。しかし、日本語などのマルチバイト文字では、一文字が複数バイトで保存されることがあります。
#include <stdio.h>
#include <string.h>
int main()
{
char text[] = "プログラム";
printf("strlenの結果は %d です\n", strlen(text));
return 0;
}
strlenの結果は 15 です
このように、日本語文字列では見た目の文字数ではなく「バイト数」が返る場合があります。C言語の文字列処理ではこの仕組みを理解しておくことが重要です。
strlen関数は条件分岐や比較処理でも活躍する
strlen関数は単に文字数を取得するだけではなく、条件分岐や比較処理と組み合わせることで非常に便利になります。例えば、入力された文字列が空かどうかを確認する処理などでよく利用されます。
#include <stdio.h>
#include <string.h>
int main()
{
char input[] = "";
if(strlen(input) == 0)
{
printf("文字が入力されていません\n");
}
else
{
printf("文字列が入力されています\n");
}
return 0;
}
文字が入力されていません
このようにstrlen関数をif文と組み合わせることで、入力チェックなどの処理を簡単に作ることができます。ログインシステム、フォーム入力チェック、ユーザー入力検証など、実際のアプリケーション開発でもよく使われるテクニックです。
C言語の文字列処理を学ぶうえでの重要ポイント
C言語では文字列は特別な型ではなく、単なるchar配列として扱われます。そのため、文字列の終わりを示すヌル文字の存在や、文字列の長さを取得する方法などをしっかり理解しておくことが重要です。
strlen関数は、C言語の文字列処理の基礎を理解するためのとても重要な関数です。文字列コピー、文字列比較、文字列連結などの処理を学ぶ際にも、strlen関数の知識が役立つ場面が多くあります。
これからC言語を学習していく人は、strlen関数の使い方だけでなく、文字列の内部構造やヌル文字の役割についても理解しておくと、より深くプログラミングを理解できるようになります。
生徒
「今日の内容を振り返ると、strlen関数はC言語で文字列の長さを取得するための関数なんですね。文字列の最後にあるヌル文字までを数える仕組みというのがとても印象に残りました。」
先生
「その通りです。C言語の文字列はヌル文字で終わるという特徴があります。strlen関数は、そのヌル文字が現れるまで一文字ずつ調べて文字数を数える関数です。」
生徒
「あと、日本語の文字列では文字数ではなくバイト数になる場合があるという話もありましたね。」
先生
「はい。C言語では文字コードやエンコーディングによって一文字のサイズが変わることがあります。だからstrlen関数は厳密には文字数ではなく、文字列の長さつまりバイト数を返す関数と覚えておくとよいでしょう。」
生徒
「strlen関数は入力チェックや文字列比較でも使えるので、実際のプログラムでもよく使いそうですね。」
先生
「その通りです。C言語のプログラムを書くときには、strlen関数はとても頻繁に登場します。文字列処理の基礎としてしっかり覚えておきましょう。これから文字列コピー関数や文字列比較関数なども学ぶと、さらに理解が深まりますよ。」
生徒
「はい。C言語の文字列操作をしっかり理解できるように、strlen関数を何度も使って練習してみます。」