で提供されるstrstr関数を利用ことによって、文字列中に別の文字列が含まれるかどうかを調べることができます。
文字列s1中に文字列s2が含まれるかどうかは、strstr(s1, s2)で調べます。文字列s2がs1の部分文字列である場合は、最初の部分文字列の先頭文字へのポインタが返され、部分文字列がない場合は空ポインタ返されます。なお、文字列s2が空文字列であれば、s1の値がそのまま返されます。
プログラム例を以下に示します。
テキスト:This is a pen.
パターン:is
This is a pen.
|
is |
/*
strstr関数の利用例
*/
#include <stdio.h>
#include <string.h>
int main(void)
{
char s1[80], s2[80];
char *p;
printf("テキスト:");
scanf("%s", s1);
printf("パターン:");
scanf("%s", s2);
p = strstr(s1, s2); /* 文字列s1から文字列s2を探索 */
if (p == NULL)
printf("テキスト中にパターンは存在しません。\n");
else {
int ofs = p - s1;
printf("\n%s\n", s1); /* XXXABCDXXXXXXXXX を表示 */
printf("%*s|\n", ofs, ""); /* | を表示 */
printf("%*s%s\n", ofs, "", s2); /* ABCD を表示 */
}
return (0);
}
■ 参照 ■