打印时间超过计算C程序中的平均单词

时间:2013-07-29 03:02:35

标签: c arrays char

我有一个程序,目前用单词读取变量* char wordlist [lengthOfArray];所以基本上它持有char字[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)没有正确获取我的单词的值,并给我错误 传递strlen的arg 1会在没有强制转换的情况下从Integer发出指针。

有没有人知道我到底能做到什么?在此先感谢任何帮助,我只是被困住了,我已经尝试了许多事情无济于事。

2 个答案:

答案 0 :(得分:1)

您的变量wordlist不是单词数组 - 它是一个字符串。如果你有一个单词数组,它就像这样的2D数组:

char *wordlist[]

或者这个:

char wordlist[][10]

或像这样的双指针:

char **wordlist

您需要根据传入的实际数据设置参数。

答案 1 :(得分: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);
  }
}