我正在尝试在结构数组中查找最长单词的大小。
我有这个结构数组:

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));

10-08 00:44