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