比较字符串C的长度

Kyl*_*ton 3 c string

我在比较C中的字符串时遇到了麻烦.首先,我需要从命令行参数中找到每个字符串的长度,然后比较它们以及打印最大的字符串.

到目前为止,它只是打印每个类型字符串的长度.我需要根据长度而不是字母顺序来比较它们.

我不明白为什么它现在正在工作,我该怎么办呢?谢谢!

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

int main(int argc, char *argv[])
{
    int i, length;

    for(i = 0; i<argc; i++)
    {
        length = strlen(argv[i]);
        printf("%s %d\n", argv[i], length);

        if(strlen(argv[i]) < strlen(argv[i+1]))
        {
            printf("%s is the biggest \n", argv[i+1]);
        }
        else
        {
            printf("%s is the biggest \n", argv[i]);
        }
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

hou*_*oft 8

您的代码存在一些问题.

首先,argv[i+1]是非法操作,如果你正在做i < argcfor.您需要更改i < argci < argc - 1for.

其次,你可能没有比较你想要的字符串.argv[0]是表示程序路径的字符串; 传递给你的程序的第一个参数是argv[1].因此,你需要改变 i = 0fori = 1.

最后,如果您想要最大的字符串,则不应在for循环中进行任何打印.相反,您应该创建两个变量,max_length以及max_length_idx存储到目前为止找到的最大字符串的长度和索引的位置.然后,在for循环之后,程序将打印出字符串argv[max_length_idx].

  • 对于upvote,不要忘记告诉OP如果只需要最长的字符串,那么for循环中应该没有打印.... (2认同)