作者共发了1篇帖子。 内容转换:不转换▼
 
点击 回复
315 0
【C语言】结构体与文件读写的程序
一派护法 十九级
1楼 发表于:2016-6-3 09:14
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>

#define FILENAME "studentInfo.dat"

struct student
{
    char id[13];
    char name[50];
    char sex;
    int age;
    struct
    {
        float c;
        float en;
        float math;
    } grade;
};

void show_students(void)
{
    struct student stu;
    FILE *fp = fopen(FILENAME, "rb");
    system("cls");
    if (fp == NULL)
    {
        puts("文件不存在或打不开!");
        getch();
        return;
    }

    puts("学号\t\t姓名\t性别\t年龄\tC语言\t英语\t高数");
    while (fread(&stu, sizeof(stu), 1, fp))
        printf("%-16s%-8s%-8c%-8d%-8.1f%-8.1f%-8.1f\n", stu.id, stu.name, stu.sex, stu.age, stu.grade.c, stu.grade.en, stu.grade.math);
    fclose(fp);

    getch();
}

void add_student(void)
{
    struct student stu;
    FILE *fp;

    system("cls");
    printf("请输入学号: ");
    fflush(stdin);
    gets(stu.id);

    printf("请输入姓名: ");
    fflush(stdin);
    gets(stu.name);
    
    printf("请输入性别(M或F): ");
    fflush(stdin);
    stu.sex = getchar();

    printf("请输入年龄: ");
    scanf("%d", &stu.age);

    printf("请输入C语言成绩: ");
    scanf("%f", &stu.grade.c);

    printf("请输入英语成绩: ");
    scanf("%f", &stu.grade.en);

    printf("请输入高数成绩: ");
    scanf("%f", &stu.grade.math);

    fp = fopen(FILENAME, "ab");
    if (fp == NULL)
        puts("录入失败, 文件打不开!");
    else
    {
        fwrite(&stu, sizeof(stu), 1, fp);
        fclose(fp);
        puts("已录入数据!");
    }
    getch();
}

int main(void)
{
    int i = 0;
    while (i != 3)
    {
        system("cls");
        printf("1: 查看\n2: 添加\n3: 退出\n请输入: ");
        scanf("%d", &i);
        switch (i)
        {
        case 1:
            show_students();
            break;
        case 2:
            add_student();
            break;
        }
    }
    return 0;
}

回复帖子

内容:
用户名: 您目前是匿名发表
验证码:
(快捷键:Ctrl+Enter)
 

本帖信息

点击数:315 回复数:0
评论数: ?
作者:巨大八爪鱼
最后回复:巨大八爪鱼
最后回复时间:2016-6-3 09:14
 
©2010-2024 Arslanbar Ver2.0
除非另有声明,本站采用知识共享署名-相同方式共享 3.0 Unported许可协议进行许可。