C言語で文字列の文字数を取得する方法は、2パターンあります。
- sizeof 演算子を使用する
- strlen 関数を使用する
まずは、それぞれの違いについて紹介します。
目的 | 講座名 | 到達点 | レベル/前提 | 想定時間 | こんな人に | 評価 |
---|---|---|---|---|---|---|
まずはC/C++を一気に俯瞰 | 一週間で身につくC/C++言語 | C/C++の基礎を通しで学び、ゲーム/組み込み/OS基礎にも触れる | 初心者〜初級 | 13時間 | C/C++をまとめて体験したい/ポインタでつまずいた経験がある | |
図解で“ゼロから”C言語 | イメージでわかる!基礎知識ゼロからのC言語。エンジニアが教えるC言語完全攻略コース。 | 図解中心で基礎→配列/構造体/ポインタまで。終盤はネットワーク等の応用も | 超初心者〜初級 | 7時間 | 活字が苦手/イメージで理解したい/まずはCだけに集中したい | |
図解+演習で基礎を速習 | 【C言語基礎マスター速習講座】知識ゼロからポインタまで完全習得!豊富な図解と演習問題で難しい概念も完全理解! | “動きの理解”重視でゼロ→ポインタまで。演習問題で定着 | 超初心者〜初級 | 16時間 | 図解多め+演習で短期に基礎固めしたい |
sizeof 演算子とstrlen 関数の違い

違いは、出力される文字数です。
sizeof 演算子は、ヌル文字を含み、実際の文字数から1文字多い文字数が出力されます。
一方strlen 関数は、実際の文字数が出力されます。
違いについてわかったところで、
それぞれの実際にどう使われているのかみていきましょう。
sizeof演算子で文字列の文字数を取得
sizeof 演算子とは、変数やデータ型の使用メモリサイズを算出するものです。
sizeof 演算子の詳しい使い方について知りたい方は、以下をみてください。

sizeof 演算子の使用例
文字列”HELLO”(5文字)の文字数を取得してみました。
#include<stdio.h>
int main(void)
{
// 文字列の定義
char moji[] = "HELLO";
printf("NULL文字を含む文字サイズ: %d\n", sizeof(moji));
return 0;
}
実行結果
NULL文字を含む文字サイズ: 6
実際の文字数(5文字)よりひと文字多く(6文字)出力されました。
そのため、出力される文字数からひと文字引けば、実際の文字数を取得可能です。
strlen 関数で文字列の文字数を取得
その名の通り、文字列(string)の長さ(length)を取得する関数です。
strlen 関数の使用例
sizeof 演算子同様に、文字列”HELLO”(5文字)の文字数を取得してみました。
strlen 関数は、「string.h」をインクルードして使用します。
#include<stdio.h>
#include<string.h>
int main(void)
{
// 文字列の定義
char moji[] = "HELLO";
printf("文字列の文字数: %d\n", strlen(moji));
return 0;
}
実行結果
文字列の文字数: 5
実際の文字数(5文字)が出力されました。
どう使い分けるの?
文字列の文字数を取得する方法を2パターン紹介しました。
でもこれどっちを使った方がいいの?って思っている人もいると思います。
私は、sizeof 演算子とstrlen 関数の以下の用途で、使い分けをおすすめします。
演算子と 関数 | 用途 |
sizeof 演算子 | 文字列をコピーする |
strlen 関数 | 文字列の文字数を取得する |
まとめ
文字列の文字数を取得する方法を2パターン紹介しました。
ですが、文字列の文字数を取得したい場合は、strlen関数を使用することをおすすめします!
これまで読んでくださりありがとうございます。