从键盘输入4个学生信息(学号,姓名,数学成绩,英语成绩),然后把它们存到磁盘的二进制文件c:\exp.txt中。


#include<stdio.h>
#include<stdlib.h>
struct student
{
    char num[10];
    char name[10];
    float math;
    float english;
}stu[5];
int main()
{
    int i;
    FILE *fp;
    for(i=0;i<4;i++)
    {
        printf("no.");
        scanf("%s",stu[i].num);
        printf("name.");
        scanf("%s",stu[i].name);
        printf("math.");
        scanf("%f",&stu[i].math);
        printf("english.");
        scanf("%f",&stu[i].english);
    }
    if((fp=fopen("c:\exp","w"))==NULL)
    {
        printf("\nCan't open this file\n");
        exit(0);
    }
    fclose(fp);
    fp=fopen("c:\exp","r");
    for(i=0;i<4;i++)
    {
        fread(&stu[i],sizeof(struct student),1,fp);
        printf("\n%s,%s,%.2f,%.2f\n",stu[i].num,stu[i].name,stu[i].math,stu[i].english);
    }
    fclose(fp);
return 0;
}

我不知道咋写,但好像没代码题目审核不成功。

供参考:

#include<stdio.h>
#include<stdlib.h>
struct student
{
    char  num[10];
    char  name[10];
    float math;
    float english;
}stu[5], st[5];
int main()
{
    int i;
    FILE* fp;
    for (i = 0; i < 4; i++)
    {
        printf("no.");
        scanf("%s", stu[i].num);
        printf("name.");
        scanf("%s", stu[i].name);
        printf("math.");
        scanf("%f", &stu[i].math);
        printf("english.");
        scanf("%f", &stu[i].english);
    }
    if ((fp = fopen("d:\\exp.txt", "w")) == NULL) //if ((fp = fopen("c:\exp", "w")) == NULL)
    {
        printf("\nCan't open this file\n");
        exit(0);
    }
    fwrite(stu, sizeof(struct student), 4, fp); //修改 写入文件
    fclose(fp);
    fp = fopen("d:\\exp.txt", "r");  //fp = fopen("c:\exp", "r");
    for (i = 0; i < 4; i++)
    {
        fread(&st[i], sizeof(struct student), 1, fp);
        printf("\n%s,%s,%.2f,%.2f\n", st[i].num, st[i].name, st[i].math, st[i].english);
    }
    fclose(fp);
    return 0;
}