社恐不想出去玩 2022-06-16 11:47 采纳率: 87.5%
浏览 27
已结题

经典乱码问题,但我不知道是啥回事

先上神仙结果

img

保存

#include"Function.h"
void save(book *head)
{
    book *p;
    FILE *fp;
    if(n==0)
    {
        printf("没有记录可存\n");
        return;
    }
    if((fp=fopen("sname.txt","wb"))==NULL)
    {
        printf("不能打开文件\n");
        exit(1);
    }
    p=head;
    while(p!=NULL)
    {
        fwrite(p,LEN,1,fp);
        p=p->next;
    }
    fclose(fp);
}

读取

book *load(book *head)
{
    FILE *fp;
    book *p,*old;
    n=0;
    if((fp=fopen("sname.txt","rb"))==NULL)
    {
        exit(1);
    }
    ASK(p);
    head=p;
    old=head;
    while(!feof(fp))
    {
        if(1!=fread(p,LEN,1,fp))break;    
        n=n+1;
        ASK(p->next);
        old=p->next;
        old=p;
        p=p->next;
    }
    old->next=NULL;
    fclose(fp);
    return(head);
}

显示

#include"Function.h"
void mydisplay(book *head)//显示函数
{
 book *p1;
 p1=head;
 unsigned int i;
 i=37;
 nodoLine();
 while(p1!=NULL)
 {
  outtextxy(13,i,p1->num);
  outtextxy(213,i,p1->name);
  outtextxy(413,i,p1->writer);
  outtextxy(613,i,p1->price);
  outtextxy(813,i,p1->leibie);//文字输出形式
  i+=25;
  p1=p1->next;
 }
}

头文件

#ifndef _H_FUNCTION_H
#define _H_FUNCTION_H
#include<stdlib.h>
#include<stdio.h>
#include<cstring>
#include<iostream>
#include<conio.h>
#include<graphics.h>
#include<ctype.h>
using namespace std;
#define ASK(q) do{  \
    q=(book*)malloc(sizeof(book));  \
        if(q==NULL){exit(-1);}  \
}while(0)
#define LEN sizeof(book)
extern int n;
typedef struct Book
{
 char name[20];//书名
 char num[10];//编号
 char writer[10];//作者
 char price[10];//价格
 char leibie[10];//类别
 struct Book *next;
}book;
extern book num[20];//书本数量
extern unsigned int count;
void nodoLine();//表格绘制
book *mycreat(book *);//创建管理书本
void mydisplay(book *);//显示函数
void search1(book *);//编号查找
void search2(book *);//书名查找
void mymodify(book *);//修改图书信息
book *mydelete(book *);//删除图书信息
void showmenu(book *);//主页面函数
void save(book *);//文件存储
book *load(book *);//文件读取
#endif

  • 写回答

1条回答 默认 最新

  • fuill 2022-06-16 13:02
    关注

    disply里的p1=head;改为p1=head->next;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月24日
  • 已采纳回答 6月16日
  • 创建了问题 6月16日

悬赏问题

  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答