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

C/C++のstrstr()関数とは?使い方・戻り値・文字列置換への応用例を徹底解説

strstr()関数は、「string.h」ヘッダーファイルに定義されている標準ライブラリ関数の一つで、C言語における文字列操作のために用意されています。主な用途は、主文字列(ここではstr1と呼びます)の中から、指定した部分文字列(str2)が最初に出現する位置を検索することです。

構文

strstr()関数の基本的な構文は以下の通りです。

char *strstr(char *str1, char *str2);

パラメータ

  • str1:検索対象となる主文字列
  • str2:str1の中から検索したい部分文字列

戻り値

部分文字列が主文字列内に見つかった場合、その最初の出現位置を指すポインタ(アドレス)を返します。見つからなかった場合はNULLを返します。

補足: 文字列の照合処理においては、終端のNULL文字('\0')は比較対象に含まれません。関数はNULL文字を検出した時点で処理を停止します。

動作イメージ

入力: str1[] = {"Hello World"}
   str2[] = {"or"}
出力: orld

入力: str1[] = {"tutorials point"}
   str2[] = {"ls"}
出力: ls point

サンプルコード

#include <string.h>
#include <stdio.h>
int main() {
    char str1[] = "Tutorials";
    char str2[] = "tor";
    char* ptr;
    // str1内でstr2が最初に出現する位置を検索
    ptr = strstr(str1, str2);
    if (ptr) {
        printf("String is found\n");
        printf("The occurrence of string '%s' in '%s' is '%s'", str2, str1, ptr);
    }
    else
        printf("String not found\n");
    return 0;
}

実行結果

上記のコードを実行すると、以下の出力が得られます。

String is found
The occurrence of string 'tor' in 'Tutorials' is 'torials

応用例:文字列の一部を置換する

strstr()関数は検索だけにとどまらず、文字列の置換にも活用できます。たとえば、主文字列str1の中で部分文字列str2が最初に出現する位置を見つけ、その位置以降を別の文字列str3で置き換えるといった処理が可能です。

入力: str1[] = {"Hello India"}
   str2[] = {"India"}
   str3[] = {"World"}
出力: Hello World

解説: str1の中にstr2が見つかるたびに、その位置以降がstr3の内容で置き換えられます。

サンプルコード

#include <string.h>
#include <stdio.h>
int main() {
    // 任意の2つの文字列を用意
    char str1[] = "Tutorialshub";
    char str2[] = "hub";
    char str3[] = "point";
    char* ptr;
    // str1内でstr2が最初に出現する位置を検索
    ptr = strstr(str1, str2);
    // 結果を出力
    if (ptr) {
        strcpy(ptr, str3);
        printf("%s\n", str1);
    } else {
        printf("String not found\n");
    }
    return 0;
}

実行結果

上記のコードを実行すると、以下の出力が得られます。

Tutorialspoint

まとめ

strstr()関数を使えば、C言語でも手軽に部分文字列の検索が行えます。さらに、戻り値として得られるポインタをstrcpy()などの関数と組み合わせることで、文字列の置換など幅広い文字列操作に応用できます。日常的な文字列処理で非常に役立つ関数なので、ぜひ使いこなせるようになりましょう。

  1. C/C++のputwchar()関数とは?使い方と実行例をわかりやすく解説

    この記事では、C++ STLにおけるputwchar()関数の動作、構文、および具体的な使用例について詳しく解説します。 putwchar()とは? putwchar()関数は、C++ STLに組み込まれている関数の一つで、<cwchar>ヘッダーファイル内で定義されています。この関数は、ワイド文字(wide character)を標準出力デバイスに書き込むために使用されます。引数として渡されたワイド文字を受け取り、システムの標準出力(stdout)に出力します。 なお、putwchar()は<cstdio>ヘッダーで定義されているputchar()関数のワイド文字版

  2. C/C++のsystem()関数とは?使い方と実行例を徹底解説

    この記事では、C/C++におけるsystem()関数の基本的な使い方と動作について、具体例を交えながら詳しく解説します。 system()関数は、C/C++標準ライブラリに含まれる関数の一つです。オペレーティングシステムのコマンドプロセッサ(コマンドプロンプト)やターミナルで実行可能なコマンドをプログラムから渡して実行でき、コマンドの処理が完了すると制御をプログラムに戻します。 この関数を使用するには、ヘッダーファイル<stdlib.h>(C++の場合は<cstdlib>)をインクルードする必要があります。 構文 system()関数の構文は以下の通りです。 int