【发布时间】:2021-01-13 10:22:48
【问题描述】:
我无法弄清楚我在这里做错了什么/我该如何解决它。它告诉我在第 90 行的 struct 之前需要一个表达式。有人可以帮我解决这个问题吗?
我想打印一个函数中的结构,但由于它背后的 2 个参数,我找不到合适的编码方式。其他功能确实可以正常工作,但是当我添加这个功能时,一切都出错了。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct geboorteDatum
{
int geboortedag;
int geboortemaand;
int geboortejaar;
};
struct Persoon
{
struct geboorteDatum;
char naam[20];
};
void printPersonen(struct Persoon *pt, int persoonCount);
void scanPersonen(int persoonCount);
int startMenu(void);
int main()
{
startMenu();
}
void printPersonen(struct Persoon *pt, int persoonCount)
{
printf("Gegevens persoon 1 : ");
printf("\n%s",pt[persoonCount].naam);
printf("\n%d",pt[persoonCount].geboortedag);
printf("\n%d",pt[persoonCount].geboortemaand);
printf("\n%d",pt[persoonCount].geboortejaar);
printf("\n");
}
void scanPersonen(int persoonCount)
{
struct Persoon pt[100];
printf("Voer Gegevens persoon . : \n");
scanf("%s", pt[persoonCount].naam);
scanf("%d", &pt[persoonCount].geboortedag);
scanf("%d", &pt[persoonCount].geboortemaand);
scanf("%d", &pt[persoonCount].geboortejaar);
}
int startMenu(void)
{
int keuze = 0;
int persoonCount = 0;
int * p1 = &persoonCount;
do
{
printf("MENU \n");
printf("1 : Voer een persoon in \n");
printf("2 : Toon alle geboortedatums \n");
printf("3 : Toon de jongste persoon \n");
printf("4 : Toon verjaardagen in een maand \n");
printf("0 : Einde \n\n");
printf("Maak een keus : ");
scanf("%d", &keuze);
printf("\n");
if(keuze == 1)
{
persoonCount++;
scanPersonen(persoonCount);
}
else if(keuze == 2)
{
printPersonen(struct Persoon *pt, int persoonCount);
}
else if(keuze == 3)
{
printf("jo3");
}
else if(keuze == 4)
{
printf("%d",persoonCount);
}
else
{
printf("Deze keus is niet mogelijk, kies opnieuw \n\n");
return startMenu();
}
} while (keuze > 0);
return persoonCount;
}
【问题讨论】:
-
struct Persoon没有名为geboortedag、geboortemaand和geboortejaar的成员。需要在Persoon中命名struct geboorteDatum类型的成员变量,然后使用。