请教C语言高手 帮忙找错 谢谢 下面程序的错误很多 青帮忙找出

[复制链接]
查看11 | 回复0 | 2007-6-20 16:49:43 | 显示全部楼层 |阅读模式
改了的地方我加了 /* modified */ 和修改说明,另外有几个函数你还没有写,我就没办法了。#include#include#include#define MAX 20 #define PAGE 3 #define PRINT1 printf("*************************************************************") #define PRINT2 printf("书号—书名—作者—采购价格—出版社—出版 日期\n") #define PRINT3 printf("%4d%10s%15s%10d%20s-%6d%4d%4d\n",book.num,book.name,book.writer,book.price,book.pub,book.pub_time) int sum ; /*出版日期结构类型*/ struct date {int year; int month; int day; } ; /* modified *//*结构体类型*/ struct book_type {int num;/* modified */char name[10]; char writer[15]; struct date pub_time; char price[10];char pub[50]; /* modified */}book[MAX]; /*存放MAX本书的结构体数组*/ /* modified *//*保存信息*/ void save_message(int sum) /* modified */{FILE*fp; int i; if((fp=fopen("library.txt","wb"))==NULL)/* modified */{printf("读文件错误!\n"); return; } for(i=0;i<sum;i++) if(fwrite(&book,sizeof(struct book_type),1,fp)!=1) printf("写文件错误!\n"); fclose(fp); } /*输入模块*/ void input_message() /* modified */{int i=0,s=MAX; system("cls"); /*清屏函数*/ printf("\n\n 录入图书信息(最多%d中)\n",s); printf("-----------------------------------------------------------\n"); do {printf("\n 第%d种图书",i+1); printf("\n 书号:"); scanf("%d",&book.num); /* modified */printf("\n 书名:"); scanf("%s",book.name); /* modified */printf("\n 作者:"); scanf("%s",book.writer); /* modified */printf("\n 采购价格:"); scanf("%s",book.price); /* modified , maybe you want to use float type*/printf("\n 出版社:"); scanf("%s",book.pub); /* modified */printf("\n 出版时间:"); scanf("%d-%d-%d",&book.pub_time.year,&book.pub_time.month,&book.pub_time.day); /* modified */i++ ;}while(i<MAX); printf("\n %d种图书信息输入完毕!\n",i); sum=1; printf("\n 按任意键返回主菜单"); /* modified, don't ignore the difference between ';' and ';' */system("pause"); /* modified , I think "bioskey(0)" is uncommon */} /*读取信息*/ int read_message() /* modified */{FILE*fp; int i=0; if((fp=fopen("book.txt","rb"))==NULL) /* modified */printf("\n\n暂时没有录入任何信息,按任意键进入信息录入\n"); return 0; while(feof(fp)!=1) {fread(&book,sizeof(struct book_type),1,fp) ; /* modified */if(book.num==0) break; /* modified */else i++; } fclose(fp); return(i); } /* 输出模块 */ void output_message() ; /* modified*/ /* 更新模块 */ void renew_message() ; /* modified*/ /* 查询模块 */ void inquire_message() ; /* modified*/ /* 图书排序 */ void sort_message() ; /* modified */ /* 主函数 */ void main(void) {int choice; read_message(); system("pause"); /* modified , I think "bioskey(0)" is uncommon */do { system("cls"); /*清屏函数*/ printf("\n\n\n ~~~~~~~图书管理系统~~~~~~~~\n\n "); printf("1. 录入图书信息:\n\n"); /* modified, replaced ';' by ';' */printf("2. 打印图书信息:\n\n"); /* modified, replaced ';' by ';' */printf("3. 更新图书信息:\n\n"); /* modified, replaced ';' by ';' */printf("4. 查询图书信息:\n\n"); /* modified, replaced ';' by ';' */printf("5. 图书排序:\n\n");/* modified, replaced ';' by ';' */printf("0. 退出系统:\n\n"); /* modified, replaced ';' by ';' */printf(" 请选择(0~5)\n"); /* modified, replaced ';' by ';' */scanf("%d",&choice); switch(choice) {case 1 :input_message();break; case 2 :output_message();break; case 3 :renew_message();break; case 4 :inquire_message();break; case 5 :sort_message();break; case 0 :break; } }while(choice!=0); save_message(sum); printf("\n\n以上信息已保存-文件名(book.txt)\n"); }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行