Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

【C言語】strlenライブラリ関数で文字列の長さを求めるプログラム例


strlen()関数とは

strlen()は、引数に渡された文字列に含まれる文字数(文字列の長さ)を返すライブラリ関数です。ヘッダーファイル string.h で宣言されており、文字列の終端を示すヌル文字 '\0' は長さに含まれません。

構文

int strlen(文字列名);

厳密には戻り値は size_t 型ですが、ここでは int 型として扱います。

strlen()を使った文字列長の取得

次のプログラムでは、gets() 関数を使って実行時に入力された名前を読み込み、strlen() 関数でその長さを整数値として取得し、printf() で画面に表示します。

※なお、gets() はバッファオーバーフローを引き起こす危険があるため、現在では非推奨の関数です。実用的な開発では fgets() の使用が推奨されます。

サンプルプログラム1

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

void main(){
    // 文字列と長さを格納する変数を宣言 //
    char name[25];
    int length;

    // ユーザーから入力を受け取る //
    printf("Enter your name : ");
    gets(name);

    // 文字列の長さを求める //
    length = strlen(name);

    // 名前と長さを表示する //
    printf("Your name is : ");
    puts(name);
    printf("Length of the string is : %d\n", length);
}

実行結果

Enter your name : Tutorialspoint
Your name is : Tutorialspoint
Length of the string is : 14

strlen()を使わずに文字列長を求める方法

続いて、strlen() などの文字列操作関数を使用せずに、forループでヌル文字 '\0' が現れるまで文字数をカウントすることで、文字列の長さを求める例を紹介します。この方法は、strlen() の内部動作を理解するのに役立ちます。

サンプルプログラム2

#include <stdio.h>

int main(){
    char string[50], i;

    printf("enter the string: \n");
    scanf("%s", string);

    // ヌル文字が出現するまで文字数をカウント //
    for(i = 0; string[i] != '\0'; ++i);

    printf("\nlength of the given string is: %d", i);
    return 0;
}

実行結果

enter the string:
TutorialsPoint
length of the given string is: 14

まとめ

strlen() を使えば1行で文字列の長さを取得できる一方、ヌル文字までを手動でカウントする方法を知っておくと、C言語における文字列の扱いやメモリ構造への理解が深まります。用途に応じて両方のアプローチを使い分けましょう。

  1. 【C言語】strncmpライブラリ関数を使って2つの文字列を比較するプログラムの作り方

    strncmpは、C言語のヘッダーファイル「string.h」に定義されている標準ライブラリ関数の一つです。この関数を使用すると、2つの文字列を比較し、どちらの文字列が大きい(辞書順で後ろにある)のかを判定することができます。 strcmp関数(文字列比較) strcmp関数は、2つの文字列を比較するための関数です。戻り値として、両方の文字列の中で最初に一致しなかった文字同士のASCIIコードの差を返します。 構文 int strcmp(string1, string2); 差が0の場合:string1 = string2(2つの文字列は等しい) 差が正の値の場合:string1 &

  2. C言語でポインタの使い方を学べるサンプルプログラムを作成する

    ポインタとは、別の変数のアドレス(メモリ上の場所)を格納するための変数のことです。C言語においてポインタは非常に重要な概念であり、メモリを直接操作することで効率的なプログラミングを可能にします。 ポインタの特徴 ポインタを使うことでメモリ空間を節約できます。 メモリ上の場所へ直接アクセスできるため、実行速度が速くなります。 ポインタを利用すると、メモリへのアクセスが効率化され、動的なメモリの割り当て(確保)と解放が可能になります。 連結リストや木構造などのデータ構造でもポインタが広く使われています。 ポインタの宣言 int *p; これは「p」がポインタ変数であり、別の整数型変数のアドレ