c - 在C中查找二维数组中最长的字符串

标签 c

我编写了一个函数,用于查找二维数组中最长的字符串,它可以部分工作。我的问题是它采用它找到的第一个最长的字符串而不检查其他字符串。

例如,以下字符串列表:

eke
em
ekeke
eme
e
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。
字符串由用户给出。

谢谢。

最佳答案

您只是比较前一个和下一个字符串。您需要检查所有字符串的长度。

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 )。

关于c - 在C中查找二维数组中最长的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46222610/

相关文章:

c - 'closeapp' 未在此范围内声明

c - 如何使用Axis2c从WSDL文件生成C文件

c - 检测链表中的多个循环

根据指针创建数据结构的新副本

c - 我正在用C语言制作linux命令程序。我想知道代码出了什么问题?

调用我调用一个函数来自动重置?

c - (int*) 在 c 中动态分配 int 数组时

c - 我的程序计算的 git 对象的 SHA1 哈希值与 git 中的哈希值不匹配

c - 在 Linux 中使用 Signal 发送信息

在C中的文件系统中创建一个目录