给定输入命令行的任意数量的程序参数,计算每个参数的长度,最后输出最长的字符串。这是我的代码,但似乎是错误的。
#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;
}
答案 0 :(得分:4)
错误:
一。 char max; ... max = strlen(argv[i]);
错了; strlen()
返回size_t
而不是char
。
二: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]);
答案 1 :(得分:2)
你的问题在这里:
max = strlen(argv[i]);
if(max < argv[i])
{
max=argv[i];
}
你似乎对max
在这里的含义感到有些困惑。你真正想做的是:
strlen(argv[i])
,并将其存储在变量max
max
尝试将其翻译为C代码并发布您的内容。
答案 2 :(得分:0)
你的意思是:
int i;
int max = strlen(argv[0]);
for (i = 0; i < argc; ++i)
{
if (max < strlen(argv[i]))
{
max = strlen(argv[i]);
}
}
答案 3 :(得分: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
}
}