Menu
Coddy logo textTech

strlen() の使い方

CoddyのCジャーニー「Logic & Flow」セクションの一部 — レッスン 15/63。

ユーザー入力から文字列を読み取る方法は学習しましたが、次はそれらの文字列の長さを判断する方法が必要です。C言語は、この目的のために特化したstrlen()関数を<string.h>ライブラリから提供しています。

strlen()関数は、文字列内の文字数をカウントし、ヌル終端文字\0に達したときに停止します。重要なのは、カウントにヌル終端文字を含めないことです。つまり、実際の可視文字のみをカウントします。

#include <stdio.h>
#include <string.h>

char word[] = "Hello";
int length = strlen(word);
printf("Length: %d\n", length);  // 出力: Length: 5

strlen() を使用するには、プログラムの先頭で <string.h> ヘッダーをインクルードする必要があります。この関数は引数として文字列を受け取り、ヌル終端文字の前の文字数を表す整数を返します。

この関数は、文字列が占めるスペースの確認、入力長の検証、または文字列のサイズに依存する操作の実行が必要な場合に特に便利です。これはCプログラミングで最も一般的に使用される文字列関数の1つです。

challenge icon

チャレンジ

簡単

入力から複数の単語を読み取り、strlen() 関数を使用してその長さを分析するC言語のプログラムを作成してください。プログラムは以下の処理を行う必要があります:

  1. 処理する単語の数を示す整数 n を読み取る
  2. n 個の各単語について:
    • 単語を格納するために、50要素の文字配列を宣言する
    • scanf を使用して単語を読み取る
    • strlen() を使用して単語の長さを計算する
    • 指定された形式で単語とその長さを表示する
  3. すべての単語を処理した後、全単語の合計文字数を計算して表示する
  4. 出現した中で最も長い単語の長さを特定して表示する

strlen() 関数を使用するために、<string.h> ヘッダーをインクルードすることを忘れないでください。

出力は以下の形式で結果を表示する必要があります:

Word: [word] - Length: [length]
Word: [word] - Length: [length]
...
Total characters: [total]
Longest word length: [max_length]

例えば、入力が以下の場合:

3
hello
programming
C

出力は以下のようになります:

Word: hello - Length: 5
Word: programming - Length: 11
Word: C - Length: 1
Total characters: 17
Longest word length: 11

このチャレンジでは、strlen() を使用した文字列の長さの測定、ループによる複数文字列の処理、および文字列の長さデータに基づいた計算の理解をテストします。

チートシート

<string.h>strlen()関数は、ヌル終端文字\0を除いた文字列内の文字数をカウントします:

#include <stdio.h>
#include <string.h>

char word[] = "Hello";
int length = strlen(word);
printf("Length: %d\n", length);  // 出力: Length: 5

この関数は引数として文字列を受け取り、ヌル終端文字の前の可視文字数を表す整数を返します。

自分で試してみよう

#include <stdio.h>
#include <string.h>

int main() {
    // 単語の数を読み込む
    int n;
    scanf("%d", &n);
    
    // 合計を追跡するための変数
    int total_characters = 0;
    int max_length = 0;
    
    // TODO: ここにコードを記述してください
    // ループを使用して各単語を処理する
    // 各単語について:
    // - 50要素の文字配列を宣言する
    // - scanfを使用して単語を読み込む
    // - strlen()を使用して長さを計算する
    // - 単語とその長さを表示する
    // - total_charactersとmax_lengthを更新する
    
    // 最終結果を表示する
    printf("Total characters: %d\n", total_characters);
    printf("Longest word length: %d\n", max_length);
    
    return 0;
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Logic & Flowのすべてのレッスン