strstr文字列照合
-
最初の文字列で2番目の文字列と同じ文字列を見つけます。ある場合は、最初の文字列の2番目の文字列の最初のアドレスを返します。
-
関数の実装
char* my_strstr(char* str, char* sub) { while (*str) { if (*str != *sub) { str++; } else { char* stri = str; char* subi = sub; while (*subi && *stri == *subi && *stri) { subi++; stri++; } if (*stri == "\0") { return NULL; } if (*subi == '\0') { return str; } else { str++; } } } return NULL; }
まず、最初の文字列の2番目の文字列の最初の文字を一致させます。一致しない場合は、最初の文字列のポインタを後方に移動します。等しい場合は、最初の文字列に記録し、2番目の文字列のアドレスを比較します。ループ条件は、2つの文字列の1つだけを空にすることはできず、2つの文字列の文字が等しく、これらの3つの条件が満たされていることです。最初の文字列が早く終了した場合は、2つのポインタ++つまり、最初の文字列に2番目の文字列がなく、事前にNULLを返すことができます。2番目の文字列が空の場合は、見つかったことを意味します。それ以外の場合は見つからないため、サブ文字列を検索します。最初の文字列の後。