2017-01-28 8 views
1

2d配列の中で最も長い文字列を見つけ出す関数を書いています。私の問題は、他のものをチェックせずに見つけた最初の最長の文字列が必要だということです。Cの2次元配列の中で最長の文字列を見つける

例えば、文字列の次のリスト:

はEKE
EM
ekeke
EME
電子
ememeememe
EMEM
ekekee
eooeeeeefe
eede

私の機能は、 "ememeememe"ではなく "ekeke"(リストの3番目の文字列)を最長としています。彼の価値は、彼の値は50
文字列は、ユーザによって与えられている、10
MAXが一定である、

void length(char str[][MAX]) 
{ 
    int i = 0; 

    for(i = 1; i < LEN; i++) 
    { 
     if(strlen(str[i]) > strlen(str[i-1])) 
     { 
      if(strlen(str[i]) > strlen(str[i+1])) 
      { 
       printf("%s", str[i]); 
       break; 
      } 
     } 
    } 
} 

LENが一定である:

は、ここに私の関数です。

ありがとうございました。

+0

デバッグしましたか? – Carcigenicate

+1

各文字列の長さと、配列内の次の文字列の長さを比較します。 'ekeke'は' em'(前の)より長く、 'eme'(次の)より長く、したがって出力されます。 – gurka

+0

@Carcigenicate - 私はデバッガを持っていません – Ma250

答えて

2

前の文字列と次の文字列のみを比較しています。 の長さをすべて確認する必要があります。文字列。私はあなたを想定しています

void length(char str[][MAX]) 
{ 
    size_t longest = strlen(str[0]); 
    szie_t j = 0; 

    for(size_t i = 1; i < LEN; i++) 
    { 
     size_t len = strlen(str[i]); 
     if(longest < len) 
     { 
      longest = len; 
      j = i; 
     } 
    } 
    printf("%s", str[j]); 
} 

は、少なくとも1つの文字列を持っているとコーナーケースを処理(ユーザ入力未満LEN文字列などがあれば - あなたは、文字列とstrを埋める方法によって異なります)。

関連する問題