!283 2021-12-23 20:36 采纳率: 50%
浏览 15
已结题

为什么信息保存之后再运行,运行不出来

为什么信息保存之后再运行,运行不出来!

#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
#include<string.h>
typedef struct {
    char name[20];
    int wuwen;
    int shuxue;
    int yingyu;
    int number;
}student;
typedef struct listnode {
    student data;
    struct listnode* next;
}listnode, * linklist;
linklist l = NULL;
FILE* fp;
char filename[100];
void createlist() {
    l = (listnode*)malloc(sizeof(listnode));
    l->next = NULL;
}
void openfile() {
    system("cls");
    createlist();
    listnode* p, * q;
    q = l;
    while (true) {
        printf("\n\n\t\t\t请输入文件名:");
        scanf("%s", &filename);
        if ((fp = fopen(filename, "r")) == NULL) {
            printf("\t\t\t没有该文件,是否需要创建g/s:");
            getchar();
            char ch; scanf("%c", &ch);
            if (ch == 'g' || ch == 'G') {
                if ((fp = fopen(filename, "a+")) == NULL) {
                    printf("\t\t\t创建文件失败\n");
                }
                else break;
            }
            else continue;
        }
        else break;
    }
    while (true) {
        p = (listnode*)malloc(sizeof(listnode));
        if (fscanf(fp, "%d\t%s\t%d\t%d\t%d", &p->data.number, &p->data.name, &p->data.wuwen, &p->data.shuxue, &p->data.yingyu) == EOF) {
            free(p);
            printf("\t\t\t读入成功\n");
            system("pause");
            break;
        }
        p->next = NULL;
        q->next = p;
        q = q->next;
    }
    fclose(fp);

}
void add_message() {
    system("cls");
    printf("\n\n\t\t\t请选择所要添加的人数:");
    int x; scanf("%d", &x);
    linklist p, q;
    for (int i = 0; i < x; i++)
    {
        p = (listnode*)malloc(sizeof(listnode));
        printf("\t\t\t正在添加第%d个学生的信息\n", i + 1);
        printf("\t\t\t请输入学号:");
        scanf("%d", &p->data.number);
        q = l->next;
        while (q != NULL) {
            if (q->data.number == p->data.number) {
                printf("\t\t\t学号重复,请重新输入");
                scanf("%d", &p->data.number);
                q = l->next;
                continue;
            }
            else q = q->next;
        }
        printf("\t\t\t请输入名字:");
        scanf("%s", &p->data.name);
        printf("\t\t\t请输入语文成绩:");
        scanf("%d", &p->data.wuwen);
        printf("\t\t\t请输入数学成绩:");
        scanf("%d", &p->data.shuxue);
        printf("\t\t\t请输入英语成绩:");
        scanf("%d", &p->data.yingyu);
        
        if (l->next == NULL) {
            p->next = NULL;
            l->next = p;
        }
        else {
            q = l->next;
            while (q != NULL)
            {
                if (q->next != NULL)
                {
                    if (p->data.number > q->data.number && p->data.number < q->next->data.number) {
                        p->next = q->next;
                        q->next = p;
                        break;
                    }
                }
                else {
                    p->next = NULL;
                    q->next = p;
                    break;
                }
                q = q->next;
            }
        }
    }
    system("pause");
}

void print_message() {
    system("cls");
    printf("\n\n\t\t\t显示学生信息\n");
    linklist p;
    p = l->next;
    printf("\t\t\t学号\t姓名\t语文\t数学\t英语\n");
    if (p == NULL) {
        printf("\t\t\t没有信息");
        system("pause");
        return;
    }
    while (p != NULL) {
        printf("\t\t\t%d\t%s\t%d\t%d\t%d\n", p->data.number, p->data.name, p->data.wuwen, p->data.shuxue, p->data.yingyu);
        p = p->next;
    }
    system("pause");
}
void savefile() {
    linklist q = l->next;
    if ((fp = fopen(filename, "w")) == NULL) {
        printf("\t\t\t文件打开失败");
        system("pause");
        return;
    }
    else {
        while (q != NULL) {
            fprintf(fp, "%d\t%s\t%d\t%d\t%d", q->data.number, q->data.name, q->data.wuwen, q->data.shuxue, q->data.yingyu);
            q = q->next;
        }
    }
    fclose(fp);
    printf("\t\t\t保存成功");
    system("pause");
}
int main() {
    openfile();
    add_message();
    print_message();
    savefile();
}

第一次保存的信息

img


然后再运行,输入文件名,然后就一直这样

img

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 12月31日
    • 创建了问题 12月23日

    悬赏问题

    • ¥15 结构功能耦合指标计算
    • ¥20 visual studio中c语言用ODBC链接SQL SERVER
    • ¥50 AI大模型精调(百度千帆、飞浆)
    • ¥15 非科班怎么跑代码?如何导数据和调参
    • ¥15 福州市的全人群死因监测点死亡原因报表
    • ¥15 Altair EDEM中生成一个颗粒,并且各个方向没有初始速度
    • ¥15 系统2008r2 装机配置推荐一下
    • ¥15 悬赏Python-playwright部署在centos7上
    • ¥15 psoc creator软件有没有人能远程安装啊
    • ¥15 快速扫描算法求解Eikonal方程咨询