我正在尝试查找结构数组中最长单词的大小。 我有这个结构数组:
struct Vocabolo{
char parola[20];
char *sinonimi[5];
char definizione[300];
};
typedef Vocabolo vocabolo;
vocabolo parole[30];
现在我必须使用增量递归才能找到数组中lognest字的大小。单词包含在:
中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;
}
在此程序中,用户必须手动插入单词,每次插入单词时,程序应按字母顺序排列。
如果我尝试输入类似“来”作为parole[0].parola
和“hi”parole[1].parola
的内容并启动此功能,则结果为3.此外,它似乎只有在最长的单词位于数组的最后位置。
有什么想法吗?
PS:这是一个较长的程序的一部分,所以不可能在这里写所有的代码,但我很确定正常的工作很好地解释了这个函数所以单词在struct数组中正确排序。答案 0 :(得分:1)
您的问题是return Scegli_max(y,Lunghezza_parola(&parole,n-1));
你打电话给Lunghezza_parola给它&假释已经是vocabolo *parole
所以这变成了vocabolo **parole
并且指针现在无效。
尝试将您的回报更改为return Scegli_max(y,Lunghezza_parola(parole,n-1));
答案 1 :(得分:0)
您的问题是return Scegli_max(y,Lunghezza_parola(&parole,n-1));
行。删除&
。
你应该传递指针的值,而不是指向它的指针。