C 将结构元素与int进行比较

C 将结构元素与int进行比较,c,C,当我试图在函数中比较stud[a].semestr==sem时,我的程序崩溃了。 有什么问题?如何解决这个问题?主要问题可能是您的扫描。您需要传递sem的地址。相反,这是将键盘输入复制到随机内存位置 osoba *os; os = (osoba*) malloc(M*sizeof(osoba)); int sem, i = 5; scanf("%d",sem); WyszukiwanieSemestr(os,sem,i); 而且 您正在为os分配M osoba对象,但将大小为5的对象传递给Wy

当我试图在函数中比较stud[a].semestr==sem时,我的程序崩溃了。
有什么问题?如何解决这个问题?

主要问题可能是您的扫描。您需要传递sem的地址。相反,这是将键盘输入复制到随机内存位置

osoba *os;
os = (osoba*) malloc(M*sizeof(osoba));
int sem, i = 5;
scanf("%d",sem);
WyszukiwanieSemestr(os,sem,i);
而且

您正在为os分配M osoba对象,但将大小为5的对象传递给WyszukiwanieSemestr。你应该通过M考试

如果M小于5,则将在WyszukiwanieSemestr内的for循环中运行数组的末尾

scanf("%d", &sem);
此外,也不需要从malloc中抛出响应

WyszukiwanieSemestr(os, sem, M);
应该是

scanf("%d",sem);

我们需要看到更多的代码
try.sem==i
本身就可以了。可能是因为对
x.naz
的strcpy太多了M:是5吗?另外,试着在循环中打印a的值,告诉你a的值是多少。最大的问题是scanf。我很惊讶它甚至可以编译,但如果它编译了,它将使用一个随机内存地址将int放入。看我的答案。我使用#define M 15,所以这应该不是问题/
scanf("%d",sem);
scanf("%d", &sem);