| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1300 人关注过本帖
标题:各位,你们看看为什么fwrite函数只能输出一组数据,程序能运行
只看楼主 加入收藏
zll310
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2013-1-11
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:37 
各位,你们看看为什么fwrite函数只能输出一组数据,程序能运行
#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("C:\\Users\\zll\\Downloads\\book.txt","wb"))==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);

}
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 menu()
{
 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;
}
}

main()
{
    l=(struct bk *)malloc(sizeof(struct bk));
    menu();
    return 0;
}
搜索更多相关主题的帖子: void return search include 
2013-01-11 22:30
zll310
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2013-1-11
收藏
得分:0 
来人阿,各位大师傅
2013-01-11 22:36
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
真心太难了啊,这么长,还连个注释都没有,亚历山大啊

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-11 22:40
wangjialong
Rank: 2
等 级:论坛游民
帖 子:77
专家分:95
注 册:2012-11-8
收藏
得分:0 
fwrite函数输出?如果你说的是输出到屏幕上的话,那就不对了,因为这个函数是将数据写入文件的函数

新手发言,请多指教。
2013-01-11 22:41
zll310
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2013-1-11
收藏
得分:0 
回复 4楼 wangjialong
你看前面三个函数!我输入数据的时候每次调用那个fwrite函数;等到查找的时候,就只有最后的一组数据了
2013-01-11 22:43
zll310
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2013-1-11
收藏
得分:0 
回复 3楼 yaobao
你看前面三个函数!我输入数据的时候每次调用那个fwrite函数存入;等到查找的时候,就只有最后的一组数据了,其他的不见了
2013-01-11 22:44
wangjialong
Rank: 2
等 级:论坛游民
帖 子:77
专家分:95
注 册:2012-11-8
收藏
得分:20 
if((book_fp=fopen("C:\\Users\\zll\\Downloads\\book.txt","wb"))==NULL)
以wb形式打开文件,每次打开时无论文件是否存在或有无数据,都重新创建一个同名新文件

新手发言,请多指教。
2013-01-11 22:51
wangjialong
Rank: 2
等 级:论坛游民
帖 子:77
专家分:95
注 册:2012-11-8
收藏
得分:0 
你每次都是一组一组写的,第二次写的时候就把前面一次的数据丢失了

新手发言,请多指教。
2013-01-11 22:53
zll310
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2013-1-11
收藏
得分:0 
回复 7楼 wangjialong
我已经试过改过ab了;和以前的效果一样的
你能看看我的指针有什么错误么
2013-01-11 22:55
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
以下是引用zll310在2013-1-11 22:44:54的发言:

你看前面三个函数!我输入数据的时候每次调用那个fwrite函数存入;等到查找的时候,就只有最后的一组数据了,其他的不见了
按你说的话就是文件指针的问题,楼主试试追加打开或自己移动下指针fseek函数   
当然,代码我没看,太亚历山大了,楼主试试吧,对就是蒙对了

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-11 23:00
快速回复:各位,你们看看为什么fwrite函数只能输出一组数据,程序能运行
数据加载中...
 
   



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

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