磁盘文件读取输出-c语言

从键盘输入10个学生的数据,并把它们转存到磁盘上,再从磁盘中读出并输出在屏幕上。
不知道哪里错了


#include 
#define SIZE 10
struct Student{
    char name[10];
    int num;
    int age;
    char addr[15];
}stu[SIZE];
struct Student  stud[SIZE];

int main(){
    printf("please enter date of students:\n");
    int i;
    for(i=0;iscanf("%s%d%d%s",stu[i].name,&stu[i].num,&stu[i].age,stu[i].addr);
    //保存到磁盘
    FILE *fp;
    if((fp=fopen("stu.dat","wb"))==NULL){
        printf("cannot open file\n");
        exit(0);
    }
    for(i=0;iif(fwrite(&stu[i],sizeof(struct Student),1,fp)!=1)
        printf("file write error\n");
    }
    fclose(fp);
    //从磁盘文件中读出
    FILE *fp1;
    if((fp1=fopen("stu.dat","rb"))==NULL){
        printf("cannot open file\n");
        exit(0);
    } 
    for(i=0;ifread(&stud[i],sizeof(struct Student),1,fp1);
        printf("%-10s %4d %4d %-15s\n",stud[i].name,stud[i].num,stud[i].age,stud[i].addr);
        fclose(fp1);
    return 0;    
} 

把第35行,36行用大括号一起括起来,放到第34行的for循环里即可。

修改如下:


#include <stdio.h>
#include <stdlib.h> 
#define SIZE 3
struct Student{
    char name[10];
    int num;
    int age;
    char addr[15];
}stu[SIZE];
struct Student  stud[SIZE];
 
int main(){
    printf("please enter date of students:\n");
    int i;
    for(i=0;i<SIZE;i++)
    scanf("%s%d%d%s",stu[i].name,&stu[i].num,&stu[i].age,stu[i].addr);
    //保存到磁盘
    FILE *fp;
    if((fp=fopen("stu.dat","wb"))==NULL){
        printf("cannot open file\n");
        exit(0);
    }
    for(i=0;i<SIZE;i++){
        // https://baike.baidu.com/item/fwrite/10942398?fr=aladdin
        if(fwrite(&stu[i],sizeof(struct Student),1,fp)!=1)
        printf("file write error\n");
    }
    fclose(fp);
    //从磁盘文件中读出
    FILE *fp1;
    if((fp1=fopen("stu.dat","rb"))==NULL){
        printf("cannot open file\n");
        exit(0);
    } 
    for(i=0;i<SIZE;i++){
        fread(&stud[i],sizeof(struct Student),1,fp1);
        printf("%-10s %4d %4d %-15s\n",stud[i].name,stud[i].num,stud[i].age,stud[i].addr);
    }
        
        fclose(fp1);
    return 0;    
} 

img

scanf里面的%c,%d,%s之间用空格或逗号隔开,不然输入的数据怎么分开呢!

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^