strstr()の実現について話す

strstr文字列照合

  1. 最初の文字列で2番目の文字列と同じ文字列を見つけます。ある場合は、最初の文字列の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番目の文字列が空の場合は、見つかったことを意味します。それ以外の場合は見つからないため、サブ文字列を検索します。最初の文字列の後。

おすすめ

転載: blog.csdn.net/weixin_43580319/article/details/112141134