0

我有一个程序当前将单词读入变量 *char wordlist[lengthOfArray]; 所以基本上它包含字符字[10]。我可以成功计算平均字长,但我有一种方法,我想递归地打印比这个平均值更长的字

void printAverage(char *wordlist, int n, int average){
 if (n > 0){
    if (strlen(wordlist[0]) > average){
       printf("%s\n", wordlist[0]);   // Print the one longer than average then move on
       printAverage(wordlist + 1, n-1, average);
      }
      else { 
           printAverage(wordlist+1, n-1, average);
           }
    }
 }

我在网上找了几个小时看看出了什么问题,但由于某种原因,比较 if (strlen(a[0]) > average) 没有正确地得到我的话的价值,并给我传递 arg 1 的错误的 strlen 使指针从 Integer 不进行强制转换。

有谁知道我如何正确地做到这一点?在此先感谢您的帮助,我只是卡住了,我已经尝试了很多东西都无济于事。

4

2 回答 2

1

您的变量wordlist不是单词数组 - 它是一个字符串。如果你有一个单词数组,它要么是这样的二维数组:

char *wordlist[]

或这个:

char wordlist[][10]

或者像这样的双指针:

char **wordlist

您需要根据传递给它的实际数据来设置参数。

于 2013-07-29T03:12:59.347 回答
0

您将 wordlist 声明为指向 char 的指针,而不是指向 char 的指针。char 是整数类型,因此当您将其取消引用为 wordlist[0] 并将其传递给 strlen() 时,编译器会警告您传递整数类型而不是指针。

尝试:

void printAverage(char **wordlist, int n, int average)
{
  if (n > 0){
    if (strlen(wordlist[0]) > average){
      printf("%s\n", wordlist[0]);   // Print the one longer than average then move on
    }
    printAverage(wordlist + 1, n-1, average);
  }
}
于 2013-07-29T03:16:51.583 回答