我有一个程序,目前用单词读取变量* 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发出指针。
有没有人知道我到底能做到什么?在此先感谢任何帮助,我只是被困住了,我已经尝试了许多事情无济于事。
答案 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);
}
}