请问这个c程序哪里有错,执行有误

 #include <stdio.h>
#define n 2
struct student
{int number;
 char name[10];
 int score;
}stu[n];

void save()
{FILE *fp;
 int i;
 if((fp=fopen("file1.dat","w"))==NULL)
 {printf("error");
  return;
 }
 for(i=0;i<n;i++)
   if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
       printf("error");
 fclose(fp);
}

int main()
{
 int i;
 for(i=0;i<n;i++)
 {printf("enter student%d's information:",i+1);
  scanf("%d%s%d",&stu[i].number,stu[i].name,&stu[i].score);
 }
 save();
 return 0;
}

注意,一个是file1.dat产生的路径,这个是相对路径,最好你用绝对路径表示,否则怕找不到

一个是文件的内容是二进制的,数字不能直接在记事本中显示。

还有就是win7以上的系统,要注意写文件的权限。

没错啊,我运行了。可以产生file1.dat

你说的是什么错误。

看起来scanf("%d%s%d",&stu[i].number,stu[i].name,&stu[i].score);这里会有点小问题,因为"%d%s%d"这里没有分割,如果输入1sss11sss222这样可能就有问题
还有就是main函数没有参数,有些编译器可能编译会不通过