我编写了一个函数,用于查找二维数组中最长的字符串,它可以部分工作。我的问题是它采用它找到的第一个最长的字符串而不检查其他字符串。
例如,以下字符串列表:
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/