在二维表中开发字符串表

时间:2018-12-31 09:10:41

标签: c

我有一个我听不懂的练习,希望有人可以帮助我。

开发一个函数,该函数接收一个字符串表,每个字符串表 最多包含40个字符,并返回其中最大的索引。注意:该函数将接收一个二维表,该表的第一维未指定。

我的问题是,在本练习中我如何使用二维表,我通常只使用普通数组来处理字符串,此后字符串的确切索引是什么?它的长度吗?因为如果是这样,我知道如何使用strlen函数来解决问题。我只是不明白表将如何工作。如果有人可以帮助我(对不起我的英语不好)。

code

2 个答案:

答案 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;
}

祝你好运!