我写了一个函数,找到了2d数组中最长的字符串,它可以部分工作。我的问题是它需要找到第一个最长的字符串而不检查其他字符串。
例如,以下字符串列表:
EKE
EM
ekeke
EME
Ë
ememeememe
EMEM
ekekee
eooeeeeefe
eede
我的功能捕获" ekeke" (列表中的第三个字符串)为最长而不是" ememeememe"。
这是我的功能:
void length(char str[][MAX])
{
int i = 0;
for(i = 1; i < LEN; i++)
{
if(strlen(str[i]) > strlen(str[i-1]))
{
if(strlen(str[i]) > strlen(str[i+1]))
{
printf("%s", str[i]);
break;
}
}
}
}
LEN
是常数,他的值是10
MAX
是常数,他的值是50
字符串由用户提供。
感谢。
答案 0 :(得分:2)
您只是比较前一个和下一个字符串。您需要检查所有字符串的长度。
void length(char str[][MAX])
{
size_t longest = strlen(str[0]);
szie_t j = 0;
for(size_t i = 1; i < LEN; i++)
{
size_t len = strlen(str[i]);
if(longest < len)
{
longest = len;
j = i;
}
}
printf("%s", str[j]);
}
我假设您至少有1个字符串并处理极端情况(如果用户输入少于LEN
个字符串等 - 取决于您使用字符串填充str
的方式)。