2

コマンドラインに任意の数のプログラム パラメーターを入力すると、それぞれの長さを計算し、最後に最長の文字列を出力します。これが私のコードですが、間違っているようです。

#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[]) {
  size_t maxlen = 0, len;
  int i;
  int longest;


  for (i = 1; i < argc; i++) {
   len = strlen(argv[i]);
     if (len > maxlen) 
       longest = argv[i];
  }

  printf("The longest string is %s. \n", longest);

  return 0;
}
4

4 に答える 4

4

間違い:

1。char max; ... max = strlen(argv[i]);違う; ではなく をstrlen()返します。size_tchar

2:if(max < argv[i])これも間違っています。文字列の長さと文字列へのポインターを比較しています。それは意味がありません。おそらくあなたが望むのは

size_t maxlen = 0, len;
int i, maxindex = 0;

for (i = 1; i < argc; i++) {
    len = strlen(argv[i]);
    if (len > maxlen) {
        maxlen = len;
        maxindex = i;
    }
}

printf("The longest string is '%s'\n", argv[maxindex]);
于 2012-10-16T18:31:00.490 に答える
2

あなたの問題はここにあります:

max = strlen(argv[i]);
if(max < argv[i])
{
  max=argv[i];
}

ここに何maxがあるのか​​少し混乱しているようです。あなたが本当にやりたいことは次のとおりです。

  • を取りstrlen(argv[i])、変数に格納する
  • より大きいかどうかを調べるmax
  • ある場合は、そこに保管してくださいmax

それをCコードに翻訳してみて、思いついたものを投稿してください。

于 2012-10-16T18:27:43.997 に答える
0

もしかして:

int i;
int max = strlen(argv[0]);

for (i = 0; i < argc; ++i) 
{
    if (max < strlen(argv[i]))
    {
        max = strlen(argv[i]);
    }
}
于 2012-10-16T18:27:48.747 に答える
0
int max = 0;//assuming  initial max length of 0. start loop from index 1 (index 0 is program name)
for(i = 1; i < argc; ++i) {

    int len = strlen(argv[i]);//get length of str
    if(max < len )
    {
       max=len;//store the new max length
    }
}
于 2012-10-16T18:29:30.807 に答える