我使用结构数组来保存关于特定人的数据,并且具有2个写出数据的功能。第三个函数(Wypisz)使用指针来使用指定的一个。问题是,当我尝试编译它时,在这个函数中出现错误的条件':
错误:在' struct'
之前的预期表达式struct Osoba
{ char imie[MAX], nazwisko[MAX];
int rokurodzenia[N];
};
void WypiszWLinii(struct Osoba osoba[])
{ int i;
for(i=0;i<N;i++)
{
printf("%c %c, %d\n", osoba[i].imie, osoba[i].nazwisko, osoba[i].rokurodzenia);
}
}
void WypiszJedenPoDrugim(struct Osoba osoba[])
{
int i;
for(i=0;i<N;i++)
{
printf("%c\n%c\n%d\n", osoba[i].imie, osoba[i].nazwisko, osoba[i].rokurodzenia);
}
}
void Wypisz(void (*wskfun)(struct Osoba), int i)
{
if(i=1)
{
wskfun=WypiszJedenPoDrugim(struct Osoba osoba[]);
}
else if(i=0)
{
wskfun=WypiszWLinii(struct Osoboa osoba[]);
}
else
{
printf("Wybrano zla opcje w menu\n");
return -1;
}
}
N和MAX是带有库包含的预定义变量
答案 0 :(得分:1)
你在Wypisz函数实现中遇到的问题是指向函数的指针到错误的值。 而不是:
wskfun=WypiszJedenPoDrugim(struct Osoba osoba[]);
或
wskfun=WypiszWLinii(struct Osoba osoba[]);
你必须获得指向该函数的指针并将其分配给变量:
wskfun = &WypiszJedenPoDrugim;
或
wskfun = &WypiszWLinii;
之后你可以使用指向函数的指针,如:
wskfun("pointer to struct array");
说,要解决你的问题,必须改变函数:
void Wypisz(void(*wskfun)(struct Osoba[]), int i)
{
if (i = 1)
{
wskfun = &WypiszJedenPoDrugim;
}
else if (i = 0)
{
wskfun = &WypiszWLinii;
}
else
{
printf("Wybrano zla opcje w menu\n");
return -1;
}
}