[英]comparing length of strings C
我在比较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;
}
您的代码存在一些问题。
首先, argv[i+1]
是一个非法的操作,如果你正在i < argc
in for
。 您需要更改i < argc
到i < argc - 1
中for
。
其次,你可能没有比较你想要的字符串。 argv[0]
是表示程序路径的字符串; 传递给你的程序的第一个参数是argv[1]
。 因此,您需要将for
的i = 0
更改for
i = 1
。
最后,如果您只想要最大的字符串,则不应在for
循环中进行任何打印。 相反,您应该创建两个变量,如max_length
和max_length_idx
,您将存储到目前为止找到的最大字符串的长度和索引。 然后,在for
循环之后,程序将打印出字符串argv[max_length_idx]
。
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
int i, max_length, max_index;
max_index = 0;
max_length = strlen(argv[0]);
for(i = 1; i < argc; i++)
{
if(strlen(argv[i]) > max_length)
{
max_length = strlen(argv[i]);
max_index = i;
}
}
printf("The longest is: %s with length equal: %d\n", argv[max_index], max_length);
return 0;
}
这不会是段错误的......
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
int i, length;
for(i = 0; i<argc - 1; 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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.