Encontrar la cadena más larga en una matriz 2d en C

Escribí una función que encuentra la cadena más larga en una matriz 2d, funciona parcialmente. Mi problema es que toma la primera cadena más larga que encuentra sin verificar las otras.

Por ejemplo, la siguiente lista de cadenas:

suplir las deficiencias
em
ekeke
eme
mi
ememeememe
emem
ekekee
eooeeeeefe
Eede

Mi función detecta “ekeke” (la tercera cadena de la lista) como la más larga en lugar de “ememeememe”.

Aquí está mi función:

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 es una constante, su valor es 10.
MAX es una constante, su valor es 50.
Las cadenas son dadas por el usuario.

Gracias.

Solo estás comparando las cadenas anteriores y siguientes. Es necesario comprobar las longitudes de todas las cadenas.

 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]); } 

Supongo que tiene al menos 1 secuencia y maneja los casos de esquina (si el usuario ingresa menos que las cadenas LEN etc., depende de cómo llene la str con cadenas).