2017-09-11 4 views
-3

私は、ファイル名の指定されたセットからのファイル名の最大長さを見つけることを望んだと目的のために次のコードを使用していました:誰もがこのファイル名の長さを見つける方法は?

で私を助けることができる

int Max_FnLen=strlen(files[0]->d_name); 
for (i=1;i<count-1;i++) 
{ 
if(strlen(files[i]->d_name)>strlen(files[i-1]->d_name)) 
{ 
    Max_FnLen=strlen(files[i]->d_name); 
} 
} 

をしかし、それは所望の出力を与えていません

ありがとう!

+2

次のように修正することができ、次のよう

size_t Max_FnLen = strlen(files[0]->d_name); for (size_t i = 1; i < count; i++) { size_t FnLen = strlen(file[i]->d_name); if (Max_FnLen < FnLen) { Max_FnLen = FnLen; } } 

を見ることができますあなたのループ条件 'i

+0

文字列だけでなく" filename "あなたの "希望の出力"とは何を得るのですか?あなたの入力は何ですか?デバッガは何を伝えますか?変数はどのように宣言されていますか? ... [ask]を読んで、必要な情報と[mcve]を入力してください。 – Olaf

答えて

3
int Max_FnLen=strlen(files[0]->d_name); 
for (i=1;i<count;i++) 
{ 
if(strlen(files[i]->d_name)>Max_FnLen) 
{ 
    Max_FnLen=strlen(files[i]->d_name); 
} 
} 

これを試してください。

-1

最初にインデックス0の要素を最大長の要素として設定した後は、次の各要素の長さを現在の最大長の値と比較する必要があります。

コードを使用すると、また最大の長さを持つ要素のインデックスを知る必要がある場合であるなぜ、コードが

size_t Max_FnLen = strlen(files[0]->d_name); 
size_t Max_Index = 0; 

for (size_t i = 1; i < count; i++) 
{ 
    size_t FnLen = strlen(file[i]->d_name); 

    if (Max_FnLen < FnLen) 
    { 
     Max_FnLen = FnLen; 
     Max_Index = i; 
    }  
} 
関連する問題