将结构元素与int进行比较

时间:2013-05-26 21:53:16

标签: c

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时,我的程序崩溃了。 问题是什么?我该如何解决这个问题?

2 个答案:

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