typedef struct
{
char nazwisko[30];
double srednia;
int semestr;
}osoba;
void WyszukiwanieSemestr(osoba *stud, int sem, int i)
{
int a;
printf("\n");
for(a=0;a<i;++a)
{
if(stud[a].semestr == sem)
{
printf("%d. %s %.3lf %d\n",a+1,stud[a].nazwisko,stud[a].srednia,stud[a].semestr);
}
}
printf("\n");
}
在int main()中:
osoba *os;
os = (osoba*) malloc(M*sizeof(osoba));
int sem, i = 5;
scanf("%d",sem);
WyszukiwanieSemestr(os,sem,i);
当我尝试比较函数中的stud [a] .semestr == sem时,我的程序崩溃了。 问题是什么?我该如何解决这个问题?
答案 0 :(得分:1)
主要问题可能是您的scanf。你需要传递sem的ADDRESS。相反,这是将键盘输入复制到随机存储位置。
scanf("%d", &sem);
此外,
你正在为os分配M osoba对象,但你传给的是5的大小到WyszukiwanieSemestr。你应该传入M代替。
如果M小于5,你将在WyszukiwanieSemestr里面的for循环中运行数组的末尾
WyszukiwanieSemestr(os, sem, M);
此外,没有必要从malloc转换响应。
答案 1 :(得分:1)
scanf("%d",sem);
应该是
scanf("%d", &sem);