我有一个我听不懂的练习,希望有人可以帮助我。
开发一个函数,该函数接收一个字符串表,每个字符串表 最多包含40个字符,并返回其中最大的索引。注意:该函数将接收一个二维表,该表的第一维未指定。
我的问题是,在本练习中我如何使用二维表,我通常只使用普通数组来处理字符串,此后字符串的确切索引是什么?它的长度吗?因为如果是这样,我知道如何使用strlen函数来解决问题。我只是不明白表将如何工作。如果有人可以帮助我(对不起我的英语不好)。
答案 0 :(得分:1)
这意味着,您的函数应如下所示:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int func (char table[][40], int numentries) {
...
}
int main (void) {
int index;
char example[][40] = {
"this",
"is",
"an",
"example",
"with",
"seven",
"words"
};
index = func(example, 7);
printf("The longest word has index %d\n", index);
exit(EXIT_SUCCESS);
}
(为零字节留出空间,甚至应该是41而不是40,这取决于规范中是否已计入该值)
现在,表中的每个条目最多包含40个字符,但是条目的数量未指定,必须在单独的参数中传递。
您可以从i = 0
到整个表进行迭代,直到找到所需的元素,然后找到长度最大的元素。相应的i
是您必须返回的索引。
答案 1 :(得分:0)
这里是一个示例,请确保您了解已完成的操作(如果不清楚),请询问。我希望这会有所帮助:
请注意,如果有多个最大值,则返回的索引将是该长度的第一个字符串。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int GetLongestString(char sArr[][40], int row)
{
int i = 0;
int max = 0;
int maxindex = -1;
for(i= 0 ; i< row; ++i) /*to check each row*/
{
if(max < strlen(&sArr[i][0])) /*gives the add of each rows string beginning for
the strlen function */
{
max = strlen(&sArr[i][0]);/*get the max value and store it for later
checks*/
maxindex = i;/* save the index of max length*/
}
}
return maxindex;
}
int main()
{
int res = 0;
char array[2][40] ={"all", "hello"};
char array2[2][40] ={"hello", "all"};
res = GetLongestString(array,2);
printf("%d\n", res);
res = GetLongestString(array2,2);
printf("%d\n", res);
return 0;
}
祝你好运!