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

C言語のstrspn()関数とは?使い方とサンプルコードをわかりやすく解説

C言語の標準ライブラリ関数 size_t strspn(const char *str1, const char *str2) は、str1 の先頭から、str2 に含まれる文字だけで構成されている部分の長さを計算する関数です。

なお、C言語では文字の配列のことを「文字列」と呼びます。まずは文字列の基本的な扱い方を確認しておきましょう。

文字列(配列)の宣言

文字列(char型の配列)は、次のように宣言します。

char stringname[size];

例えば、次のように書くと、50文字分の長さを持つ文字列が定義されます。

char string[50];

文字列の初期化

文字列の初期化には、主に以下の2つの方法があります。

  • 1文字ずつ文字定数で初期化する方法:
char string[10] = { 'H', 'e', 'l', 'l', 'o', '\0' };
  • 文字列定数を使って初期化する方法:
char string[10] = "Hello";

アクセス方法:制御文字列「%s」を使用すると、終端文字 '\0' に到達するまで文字列を読み込むことができます。

strspn()関数とは

strspn()関数は、指定した文字列の先頭から、もう一方の文字列に含まれる文字が何文字連続して一致するかを調べ、その文字数を返します。

宣言

strspn()関数の宣言は以下の通りです。

size_t strspn(const char *string1, const char *string2)

各引数の意味は次の通りです。

  • string1:調査対象となる文字列。この文字列の先頭部分が string2 の内容と照合されます。

  • string2:検索に使用する文字の集合。ここに含まれる文字が string1 の中で探されます。

strspn()関数の戻り値

string1 の先頭から、string2 に含まれる文字が連続して一致した文字数を返します。1文字も一致しなかった場合は 0 が返ります。

使用例

次の例は、strspn()関数の使い方を示したものです。

#include <stdio.h>
#include <string.h>
int main (){
    int length;
    char string1[20];
    char string2[20];
    printf("enter string1:\n");
    gets(string1);
    printf("enter string2:\n");
    gets(string2);
    /* 文字列string2の文字が、文字列string1の先頭から
     * 何文字連続して一致するかを調べ、
     * 一致した文字数を返す
     */
    length = strspn(string1, string2);
    printf("The matched char are: %d\n", length );
    return 0;
}

実行結果

上記のプログラムを実行すると、次のような結果が出力されます。

enter string1:
Tutorials
enter string2:
Tutorials Point
The matched char are: 9

この例では、string1「Tutorials」の先頭9文字がすべて string2「Tutorials Point」に含まれているため、戻り値として 9 が返っています。

なお、サンプルコードで使用している gets() 関数はバッファオーバーフローの危険があるため、現在のC標準規格では非推奨です。実際の開発では、fgets() などの安全な入力関数を使用することをおすすめします。

  1. C言語のstrcmp()関数とは?文字列比較の基本と使い方を徹底解説

    C言語の標準ライブラリ関数 int strcmp(const char *str1, const char *str2) は、ポインタ str1 が指し示す文字列と、str2 が指し示す文字列を比較するための関数です。C言語において、文字型の配列は「文字列」と呼ばれます。まずは文字列の基本的な扱い方から確認していきましょう。文字列の宣言文字列(文字配列)の宣言は以下のように行います。char stringname [size];例えば、char string[50]; と宣言すれば、最大50文字の長さを持つ文字列を格納できます。文字列の初期化文字列の初期化には、主に次の2つの方法があります。1

  2. C言語のstrcpy()関数とは?基本構文と使い方をわかりやすく解説

    C言語のライブラリ関数 char *strcpy(char *dest, const char *src) は、src が指し示す文字列を dest にコピーするための関数です。 C言語では、文字の配列のことを「文字列」と呼びます。 文字列の宣言 文字列(文字配列)の宣言は、以下の形式で行います。 char stringname[size]; 例えば char string[50]; と宣言すると、最大50文字の文字列を格納できる配列が確保されます。 文字列の初期化 文字列の初期化には、主に以下の2つの方法があります。 1. 文字定数を使う方法 char string[10] = {H,