标题:各位,你们看看为什么fwrite函数只能输出一组数据,程序能运行
只看楼主
zll310
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2013-1-11
得分:0 
回复 30楼 wangjialong
可以你不能用查找功能找到你输入的第一组数据
2013-01-11 23:52
zll310
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2013-1-11
得分:0 
回复 30楼 wangjialong
你输出数据的时候是怎么输出的????
你调用了什么?我的l指针么?我看看
2013-01-11 23:55
wangjialong
Rank: 2
等 级:论坛游民
帖 子:77
专家分:95
注 册:2012-11-8
得分:0 
我没有看你的查找函数,如果找不到就是你查找的函数的问题了,跟目前讨论的无关,另外建议你输入不要那么做,太麻烦了

新手发言,请多指教。
2013-01-11 23:55
zll310
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2013-1-11
得分:0 
回复 33楼 wangjialong
我看看你写的函数呀!你调用了什么
2013-01-11 23:58
wangjialong
Rank: 2
等 级:论坛游民
帖 子:77
专家分:95
注 册:2012-11-8
得分:0 
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef struct bk {
char book_num[10];
char book_name[10];
int book_kc;
int book_xc;
struct bk * next;
}book;

struct bk *l;
void save();
void menu();
void  putin();
void search() ;
void lend();
void reback();
void save(char book_num[],char book_name[],int num)
{   FILE *book_fp;
   struct bk *t;
  if((book_fp=fopen("e:book.txt","a+"))==NULL)
{  printf("不能建立图书文件!\n"); return; }
   t=(struct bk *)malloc(sizeof(struct bk));
   strcpy(t->book_num,book_num);
   strcpy(t->book_name, book_name);
   t->book_kc=t->book_xc=num;
   l->next=t;t->next=NULL;
   fwrite(t,sizeof(struct bk),1,book_fp);
   free(t);
   fclose(book_fp);
}
void  putin()
{
   struct bk *p;
   p=(struct bk *)malloc(sizeof(struct bk));
   int number;
   int  y=1;
   system("cls");
   while(y)
   {
  printf("请输入您的书的编号:");
  scanf("%s",p->book_num);
  printf("请输入书名:");
  scanf("%s",p->book_name);
  printf("请输入您要存的数量:");
  scanf("%d",&number);
  save(p->book_num,p->book_name,number);
  printf("\n是否继续录入(1.继续;0,退出录入):");

 
  scanf("%d",&y);
  switch(y)
{
     case 1:putin();
     break;
     case 0:system("cls");menu();
     break;
   
}
}
    
}
void search()
{  struct bk *p; 
   p=(struct bk *)malloc(sizeof(struct bk));
   printf("请输入您的书的编号:");
   scanf("%s",p->book_num);
   while(p!=NULL&&strcmp(p->book_num,l->book_num)!=0)
  { l=l->next;
   if(l==NULL) printf("\n\t此编号对应的图书不存在!\n");
  }
       printf("\n\t图书编号\t图书名\t库存量\t现存量 \n");
    printf(" %10s\t %10s\t %d\t %d\t\n",l->book_num,l->book_name,l->book_kc,l->book_xc);
    menu();
  

}
void lend()
{ struct bk *q; 
  q=(struct bk *)malloc(sizeof(struct bk));
  printf("请输入您的书的编号:");
  scanf("%s",q->book_num);
  while(q!=NULL&&strcmp(q->book_num,l->book_num)!=0)
{
     l=l->next;
  if(l==NULL)
  printf("\n\t此编号对应的图书不存在!\n");
}
  printf("\n\t图书编号\t图书名\t库存量\t现存量 \n");
printf(" %10s\t %10s\t %d\t %d\t\n",l->book_num,l->book_name,l->book_kc,l->book_xc); 

l->book_xc=l->book_xc-1;
save(l->book_num,l->book_name,l->book_xc);
menu();
} 

void reback()
{
   struct bk *b; 
   b=(struct bk *)malloc(sizeof(struct bk));
   printf("请输入您的书的编号:");
   scanf("%s",b->book_num);
   while(b!=NULL&&strcmp(b->book_num,l->book_num)!=0)
  {
      l=l->next;
   if(l==NULL)
   printf("\n\t此编号对应的图书不存在!\n");
  }
     l->book_xc=l->book_xc+1;
    save(b->book_num,b->book_name,b->book_xc);
    printf("\n\t图书编号\t图书名\t库存量\t现存量 \n");
    printf(" %10s\t %10s\t %d\t %d\t\n",l->book_num,l->book_name,l->book_kc,l->book_xc);
       printf("\n您的书几经归还,谢谢!") ;
       menu();
} 
void display()
{
    FILE *fq;
    struct bk _t;
    fq=fopen("e:book.txt","rb");
    while((fread(&_t,sizeof(struct bk),1,fq))==1)
    {printf(" %10s\t %10s\t %d\t %d\t\n",_t.book_num,_t.book_name,_t.book_kc,_t.book_xc);}
    fclose(fq);
}
void menu()
{ void diaplay();
int lm;
printf(" \n               *****************************************************                    ");
printf(" \n                                    ★图书管理系统★                                 ");
printf(" \n                                       ㈠图书入库                                   ");
printf (" \n                                     ㈡查询图书                                 ");
printf(" \n                                      ㈢图书借阅                                  ");
printf(" \n                                    ㈣图书归还                                    ");
printf(" \n                                     ㈤退出系统                                     ");
printf(" \n                           按上述1/2/3/4/5数字键选择以上功能                    ");
printf(" \n             *******************************************************                       ");    

scanf("%d",&lm);  
switch(lm)
{
    case 1:putin();
    break;
    case 2:search();
    break;
    case 3:lend();
    break;
    case 4:reback();
    case 5:break;
    case 6:display();
}
}

main()
{
    l=(struct bk *)malloc(sizeof(struct bk));
    menu();
    return 0;
} 

新手发言,请多指教。
2013-01-12 00:02
wangjialong
Rank: 2
等 级:论坛游民
帖 子:77
专家分:95
注 册:2012-11-8
得分:0 
本来标成红色的了····

新手发言,请多指教。
2013-01-12 00:03
wangjialong
Rank: 2
等 级:论坛游民
帖 子:77
专家分:95
注 册:2012-11-8
得分:0 
用display把文件中的数据打印出来结果就是我的截图,不说了睡觉了,明天还要复习呢

新手发言,请多指教。
2013-01-12 00:04
zll310
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2013-1-11
得分:0 
回复 35楼 wangjialong
好吧,我知道了,那今天十分感谢你了,已经不能用言语来形容,哈哈
2013-01-12 00:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-396313-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.224084 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved