strstr

[機能]

  文字列の中から指定された文字列を探索します.文字列が見つかった場合は,最初に見つかった位置へのポインタを返し,見つからなかった場合は,NULL を返します.

[形式]
#include <string.h>

char *strstr(const char *str1, const char *str2)
	str1 : 文字列
	str2 : 探索する文字列		
[使用例]

  1. 文字や文字列の探索方法の比較
    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
    	long k;
    	int i;
    	char *pos;
    	char *str = "xybaccakmccazabc";
    
    	printf("対象とする文字列  %s\n", str);
    /*
    		 文字の探索
    */
    	pos = strchr(str, 'a');
    	k   = (long)pos - (long)str + 1;
    	printf("   文字の探索\n");
    	printf("      文字 a は最初から %ld 文字目にあります\n", k);
    /*
    		 文字の後方からの探索
    */
    	pos = strrchr(str, 'a');
    	k   = (long)pos - (long)str + 1;
    	printf("   文字の後方からの探索\n");
    	printf("      文字 a は最初から %ld 文字目にあります\n", k);
    /*
    		 文字群の中のどれかの文字の探索
    */
    	pos = strpbrk(str, "uvwk");
    	k   = (long)pos - (long)str + 1;
    	printf("   文字群「uvwk」に含まれる文字の探索\n");
    	printf("      文字 %c が最初から %ld 文字目にあります\n", *pos, k);
    /*
    		 文字列の探索
    */
    	pos = strstr(str, "cc");
    	k   = (long)pos - (long)str + 1;
    	printf("   文字列の探索\n");
    	printf("      文字列 cc は最初から %ld 文字目にあります\n", k);
    /*
    		 指定された文字群以外からなる文字列の長さ
    */
    	i = strcspn(str, "abc");
    	printf("   文字群「abc」以外からなる文字列の長さ\n");
    	printf("      最初から %d 文字目までに a,b,c の文字は含まれません\n", i);
    /*
    		 指定された文字群からなる文字列の長さ
    */
    	i = strspn(str, "abcxy");
    	printf("   文字群「abcxy」からなる文字列の長さ\n");
    	printf("      最初から %d 文字目までが a,b,c,x,y でなっています\n", i);
    
    	return 0;
    }
    			
    (出力)
    対象とする文字列  xybaccakmccazabc
       文字の探索
          文字 a は最初から 4 文字目にあります
       文字の後方からの探索
          文字 a は最初から 14 文字目にあります
       文字群「uvwk」に含まれる文字の探索
          文字 k が最初から 8 文字目にあります
       文字列の探索
          文字列 cc は最初から 5 文字目にあります
       文字群「abc」以外からなる文字列の長さ
          最初から 2 文字目までに a,b,c の文字は含まれません
       文字群「abcxy」からなる文字列の長さ
          最初から 7 文字目までが a,b,c,x,y でなっています
    			
[参照]

strrchr, strchr, strspn, strcspn, strpbrk, strlen

菅沼ホーム 本文目次 演習問題解答例 付録目次 索引