qq_37492879 2017-02-10 02:17 采纳率: 100%
浏览 982
已采纳

c语言小白:为什么这段代码在编译的时候出错误,求大神帮忙解决

#include
#include

#include

#define M 100 //数组最大个数

struct student
{
int num;

char name[10];

char writer[10];

char press[10];

int data;
float price;
int kucun;
int jieyue;

};
typedef struct student BOOK;

extern BOOK boo[M];

void AppendScore(BOOK *head);
void PrintScore(BOOK *head,int i);

//....删除、修改等函数省略
#include"book.h"
int n=0;
//记录存入信息的个数

/*
函数功能: 提供用户进行菜单选择
参数:void
返回值:char 返回用户选择的菜单项
*/

char Menu(void)
{
char ch;

    printf("\n图书管理查询          \n");
    printf(" 1.添加图书信息       \n");
    printf(" 2.现存图书信息的显示   \n");
    printf(" 3.查询               \n");
    printf(" 5.删除                   \n");
    printf(" 6.修改               \n");
    printf(" 0.退出\n");
    printf("Please Input your choice:");
    scanf(" %c", &ch);      /*在%c前面加一个空格,将存于缓冲区中的回车符读入*/
    return ch;

}

void main()
{
char ch;

    BOOK   boo[M];


    while (1)
    {
        ch = Menu();                        /* 显示菜单,并读取用户输入 */
        switch (ch)
        {
            case'1':AppendScore(boo );      /* 调用成绩添加模块 */
                        break;
            case'2':PrintScore(boo,n);      /* 调用成绩显示模块 */
                    break;
            case'0':exit(0);                        /* 退出程序 */
                printf("End of program!");
                    break;
            default:printf("Input error!");
                    break;
        }
    }

}
#include"book.h"
extern int n;

void AppendScore(BOOK *head)
{
FILE *fp;
int i;
BOOK *p;
char next='Y';

printf("请输入数据:");
p=head+n;

while(next=='Y')
{
    printf("\n请输入编号:");
    scanf("%d", &p->num);
    printf("请输入书名:");
    scanf("%s", p->name);       
    printf("请输入作者名字");
    scanf("%s",p->writer);
    printf("请输入出版社名字");
    scanf("%s",p->press);
    printf("请输入出版日期如2002年1月10号则输入20010110");
    scanf("%d",&p->data);
    printf("请输入价格(精确到小数点后一位)");
    scanf("%f",&p->price);
    printf("请输入馆藏书");
    scanf("%d",&p->kucun);
    printf("请输入借阅数");
    scanf("%d",&p->jieyue);
    n++;
    p++;

    getchar();
    printf("继续输入吗(Y/N):");
    scanf("%c",&next);

}
if((fp=fopen("boo.dat","wb"))==NULL)
{
    printf("cannot open file\n");
    return;
}
for(i=0;i<n;i++)
    if(fwrite(&boo[i],sizeof(BOOK),1,fp)!=1)
        printf("file writer errror\n");
    fclose(fp);

}

void ShowTable(void)
{

printf("编号\t书名\t作者\t出版社\t出版日期\t价格\t馆藏数\t借阅数\n");

}

void PrintScore(BOOK *head,int n)
{
FILE *fp;

int  i;
ShowTable();
if((fp=fopen("boo.dat","rb"))==NULL)
{
    printf("cannot open file\n");
    exit(0);
}
for(i=0;i<n;i++)
{
    fread(&boo[i],sizeof(BOOK),1,fp);
    printf("%10d%10s%10s%11s%12s%10f%11d%11d\n",boo[i].num,boo[i].name,boo[i].writer,boo[i].press,boo[i].data,boo[i].price,boo[i].kucun,boo[i].jieyue);
}
fclose(fp);

}

  • 写回答

4条回答 默认 最新

  • fangandflower 2017-02-10 02:46
    关注

    贴编译报错的log,根据log才能知道你哪里出错了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘