ViVi Home > 技術文書 > ポインタ入門 > 文字列関数 > strstr


 

 

C/C++ ポインタ入門 > 文字列関数 > strstr
Nobuhide Tsuda
Nov-2013

文字列検索:const char *my_strstr(const char *text, const char *pat)

const char *my_strstr(const char *text, const char *pat)
{
   
for(;;) {
       
for(int i = 0; ; ++i) {   // pat の終端記号までループ
           
if( pat[i] == '\0' )
               
return text;          // 終端記号まで一致した場合はパターン発見
           
if( pat[i] != text[i] )     // 文字が不一致の場合は、ループを抜ける
               
break;
       
}
       
if( *text++ == '\0' )   // text の終端記号に達した場合は、
           
return 0;                  // 0 を返す
   
}
}

解説:

const char *my_strstr(const char *text, const char *pat)
{
   
for(;;) {
       
const char *t2 = text;
       
const char *p2 = pat;
       
for(;;) {
           
if( *p2 == '\0' )
               
return text;
           
if( *p2++ != *t2++ )
               
break;
       
}
       
if( *text++ == '\0' )
           
return 0;
   
}
}

解説:

const char *my_strstr(const char *text, const char *pat)
{
   
for (;;) {
       
if( my_is_matched(text, pat) ) {     // text 位置が pat とマッチする場合
           
return text;      // そのアドレスを返す
       
}
       
if( *text++ == '\0' ) {
               
break;
       
}
   
}
   
return 0;
}

解説:

 


前: | 次: