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

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

例如,以下字符串列表:

勉强维持
EM
ekeke
EME
Ë
ememeememe
EMEM
ekekee
eooeeeeefe
eede

我的函数捕获“ekeke”(列表中的第三个字符串)作为最长而不是“ememeememe”。

这是我的function:

void length(char str[][MAX]) { int i = 0; for(i = 1; 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]); } 

我假设你至少有一个字符串和句柄角(如果用户输入少于LEN字符串等 - 取决于你如何用字符串填充str )。