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()などの関数と組み合わせることで、文字列の置換など幅広い文字列操作に応用できます。日常的な文字列処理で非常に役立つ関数なので、ぜひ使いこなせるようになりましょう。
-
C/C++のputwchar()関数とは?使い方と実行例をわかりやすく解説
この記事では、C++ STLにおけるputwchar()関数の動作、構文、および具体的な使用例について詳しく解説します。 putwchar()とは? putwchar()関数は、C++ STLに組み込まれている関数の一つで、<cwchar>ヘッダーファイル内で定義されています。この関数は、ワイド文字(wide character)を標準出力デバイスに書き込むために使用されます。引数として渡されたワイド文字を受け取り、システムの標準出力(stdout)に出力します。 なお、putwchar()は<cstdio>ヘッダーで定義されているputchar()関数のワイド文字版
-
C/C++のsystem()関数とは?使い方と実行例を徹底解説
この記事では、C/C++におけるsystem()関数の基本的な使い方と動作について、具体例を交えながら詳しく解説します。 system()関数は、C/C++標準ライブラリに含まれる関数の一つです。オペレーティングシステムのコマンドプロセッサ(コマンドプロンプト)やターミナルで実行可能なコマンドをプログラムから渡して実行でき、コマンドの処理が完了すると制御をプログラムに戻します。 この関数を使用するには、ヘッダーファイル<stdlib.h>(C++の場合は<cstdlib>)をインクルードする必要があります。 構文 system()関数の構文は以下の通りです。 int