Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C程序中打印比计算的平均字长的字_C_Arrays_Char - Fatal编程技术网

在C程序中打印比计算的平均字长的字

在C程序中打印比计算的平均字长的字,c,arrays,char,C,Arrays,Char,我有一个程序,目前读取字到一个变量*字符字列表[lengthOfArray];所以基本上它包含char单词[10]。我可以成功地计算出平均字长,但我有一种方法,我想递归地打印比平均字长的字 void printAverage(char *wordlist, int n, int average){ if (n > 0){ if (strlen(wordlist[0]) > average){ printf("%s\n", wordlist[0]); //

我有一个程序,目前读取字到一个变量*字符字列表[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);
           }
    }
 }
我在网上找了好几个小时,想看看有什么不对,但出于某种原因,比较 如果(strlen(a[0])>average)没有正确获取单词的值,并给出错误信息 传递strlen的arg 1将从整数生成指针,而不进行强制转换


有人知道我怎么才能正确地做到这一点吗?提前谢谢你的帮助,我只是被卡住了,我已经尝试了很多没有用的东西

您的变量
wordlist
不是一个单词数组-它是一个字符串。如果您有一个单词数组,它可以是如下所示的2D数组:

char *wordlist[]
char **wordlist
或者这个:

char wordlist[][10]
或者像这样的双指针:

char *wordlist[]
char **wordlist

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

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

尝试:


“a”在哪里声明?啊,对不起,a实际上是单词列表。字符串通常以nul结尾吗?函数究竟是如何失败的?它是打印所有单词还是根本不打印?它没有明显的问题…它什么都不做,有时会崩溃。谢谢你的帮助,但我已经声明了wordlist,正如你所说的char*wordlist[]。我是否也需要将其作为*wordlist[]传递?@KadinBoyle这是一个奇怪的问题。当然,类型必须匹配。您在wordlist[0]上执行strlen和printf(“%s”),因此它当然必须是
char*
,而wordlist本身必须是指向
char*
(声明为
char*wordlist[]
与声明为
char**wordlist
相同)。传递的参数就是
wordlist
@KadinBoyle如果函数外部的
wordlist
被声明为
char*wordlist[10]
,那么调用函数时只需将其作为
wordlist
传递。只是给它一个旋转,遗憾的是它说[Warning]从不兼容的指针类型传递“printAverage”的arg 1。我从你说的话中学到了:)@KadinBoyle,它是为哪个printAverage的调用说的?@JimBalter,就是它之前的方法,谢谢大家,还有@paddy