2016-10-04 13 views
-1

次のfindString()関数は、指定された引数の値を返します。findString()関数から返される結果の説明が必要です

FINDSTRING( "テキスト"、 "")( " "テキスト")0

FINDSTRINGを返す" は-1を返します。

findString( ""、 "")は-1を返します。

私はstrstrを読み、他の質問を見て、それを取得しません。

// find s1 inside source, return index number if found, -1 if not found  

#include <stdio.h> 
#include <stdbool.h> 

int findString (const char source[], const char s[]) 
{ 
    int i, j, foundit = false; 

    // try each character in source 

    for (i = 0; source[i] != '\0' && !foundit; ++i) { 
     foundit = true; 

     // now see if corresponding chars from s match 

     for (j = 0; s[j] != '\0' && foundit; ++j) 
      if (source[j + i] != s[j] || source[j + i] == '\0') 
       foundit = false; 

     if (foundit) 
      return i; 
    } 

    return -1; 
} 

int main (void) 
{ 
    int index; 

    printf ("index = %i\n", findString("text", "")); 
    printf ("index = %i\n", findString("", "text")); 
    printf ("index = %i\n", findString("", "")); 

    return 0; 
} 
+0

デバッガでステップ実行しましたか?どのIDEを使用していますか? – Podo

+0

gcc、minGW、notepad – user6923395

+0

カジュアルな読み方では、関数が早期に問題を抱えてから-1を返すことが示唆されています。空の文字列を探す空間的なケースも論理的に見えます。 – usr2564301

答えて

2
  • 最初の呼び出し、空の文字列は、インデックスゼロに任意の文字列で見つけることができるので0を返す(コード内のバグがある以外は、以下を参照のこと)
  • 第コールリターン-1ため
  • 3回目の呼び出しでコードにバグがあるため、-1が返されます。外側のループが入力されていない場合(つまり、source文字列が空の場合)は、特殊なケースを追加する必要があります検索文字列0のときに0を返します。も空です。
+0

@ user6923395戻り値は0、-1、0でなければなりません。 – dasblinkenlight

0

sの最初の出現のインデックスをsourceに返します。 ssourceに存在しない場合、それは返されます-1

関連する問題