我正在尝试查找结构数组中最长单词的大小。 我有这个结构数组:
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));
}
}
我们的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:这是一个较长程序的一部分,因此不可能在这里编写所有代码,但我很确定除了这个函数之外,一切都工作正常,因此单词在结构数组中的顺序正确。
最佳答案
您的问题是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));
关于c - 使用递归查找最长的单词 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9176119/