我正在尝试在结构数组中查找最长单词的大小。
我有这个结构数组:
struct Vocabolo{
char parola[20];
char *sinonimi[5];
char definizione[300];
};
typedef Vocabolo vocabolo;
vocabolo parole[30];
现在,我必须使用增量递归来查找数组中最靠后的单词的大小。每个词包含在:
parole[n].parola
我正在使用此代码:
int Lunghezza_parola(vocabolo *parole,int n){
int y;
if(n == 1)
return strlen(parole[0].parola);
else {
y = strlen(parole[n-1].parola);
return Scegli_max(y,Lunghezza_parola(&parole,n-1));
}
}
Wnere
Scegli_max
是:int Scegli_max(int y, int lunghezzaStringa){
if (y >= lunghezzaStringa)
return y;
else
return lunghezzaStringa;
}
在此程序中,用户必须手动插入单词,并且每次插入单词时,程序都应按字母顺序将其放入。
如果我尝试输入诸如“ come”作为
parole[0].parola
和“ hi” parole[1].parola
之类的东西并启动此函数,则结果为3。同样,只有最长的单词在数组的最后一个位置时,它才似乎起作用。任何想法?
PS:这是较长程序的一部分,因此不可能在此处编写所有代码,但是我敢肯定,此功能可以正常工作,因此字在struct数组中的顺序正确。
最佳答案
您的问题是return Scegli_max(y,Lunghezza_parola(&parole,n-1));
您调用Lunghezza_parola为其提供&parole,它已经是一个vocabolo *parole
,因此它成为一个vocabolo **parole
,并且指针现在无效。
尝试将您的退货更改为return Scegli_max(y,Lunghezza_parola(parole,n-1));