问题描述
- 请问这个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函数没有参数,有些编译器可能编译会不通过
时间: 2024-09-20 09:10:18