在C中查找2d数组中最长的字符串

时间:2017-01-28 13:15:00

标签: c

我写了一个函数,找到了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 字符串由用户提供。

感谢。

1 个答案:

答案 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的方式)。