C语言新手 编译器没有报错但运行出错 请问程序是哪里出了问题 感谢

编写某公司的员工管理系统,员工最多为50人,员工信息以结构体数组形式存储,请完成员工档案的输入,并统计所有性别为M的记录的个数。
#include
int main()
{
struct stuff{
int id;
char name[15];
char sex;
int salary;
};
struct stuff stu[50];
int i,n,id,m,sum=0;
do{
printf("id:\n");
scanf("%d",&id);
for(i=0;i<n;i++)
{
if(id==stu[i].id){
printf("This id is exits");
return;}
}
stu[i].id=id;
printf("name:\n");
gets(stu[i].name);
printf("sex:\n");
scanf("%c",&stu[i].sex);
if(stu[i].sex=='M') sum++;
printf("salary:\n");
scanf("%d",&stu[i].salary);
n++;
printf("continues to add?");
scanf("%c",&m);
}while(m!='N');
printf("%d",n);
}

语法没有错误,运行失败,一般是数据泄露,你的n没有给初始

stu[i].id=id;
有问题的,i没有改变?

你没给n初始化啊,for循环那里n没有值,直接小于50就好了啊。