标题:指针写的数据怎么样整体写入输出文件?
只看楼主
wu2782641803
Rank: 2
等 级:论坛游民
帖 子:65
专家分:46
注 册:2013-10-28
结帖率:88.24%
 问题点数:0 回复次数:1 
指针写的数据怎么样整体写入输出文件?
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<stdlib.h>
typedef struct{
 char name[5];
 char sex[5];
 char  ID[20];//身份证号码
 char   V[5];    //VIP客户
 char number[5];  //房间号  
 char come[15];  
 char   day[5];  //入住天数
 char type[5];  //入住房间档次
 char price[5];  //收取费用
 char leave[15];
}typedata;
typedef struct node{
 typedata data;
 struct node  *next;
}Listnode;
 typedef Listnode *Linklist;
 Linklist head;
 Listnode *p;
 void save(Linklist );
 void read(Linklist );
 //客户信息的建立
 Linklist Creat(int a)      
 { int i=1;
  Linklist head=(Listnode*)malloc(sizeof(Listnode));
   Listnode *p,*q;
     q=head;
   while(a--)
   {   
     p=(Listnode*)malloc(sizeof(Listnode));
        printf("请输入第%d客户的姓名:\n",i);
  scanf("%s",p->data.name);
  printf("请输入客户的性别:\n");
  scanf("%s",p->data.sex);
  printf("请输入客户的省份证号:\n");
  scanf("%s",p->data.ID);
  if(strlen(p->data.ID)!=18)
  {printf("省份证号码输入错误!!请您重新输入:\n");
  scanf("%s",p->data.ID);}
  printf("请输入客户是否为VIP客户(0/1表示是与否!):\n");
  scanf("%s",p->data.V);
  printf("请输入客户所住的房间号:\n");
  scanf("%s",p->data.number);
  //客户入住的时间格式判断
        printf("请输入客户入住的日期:\n");
        scanf("%s",p->);
      
        if((p->[4]!='-')&&(p->[7]!='-')&&(strlen(p->)!=10))
       { printf("输入日期的格式错误!!请重新输入:\n");
        scanf("%s",p->);}
        //以上是客户入住时间格式的判断
  printf("请输入客户入住的天数:\n");
  scanf("%s",p->data.day);
  printf("请输入客户入住房间的档次(1.普通房间(general)2.贵宾房间(visitant)3.高档房间(deluxe)):\n");
  scanf("%s",p->data.type);
  printf("请输入应该收取的费用:\n");
  scanf("%s",p->data.price);
  //客户离开的时间格式判断
        printf("请输入客户离开的时间:\n");
        scanf("%s",p->data.leave);
      
        while(p->data.leave[4]!='-'&&p->data.leave[7]!='-')
        {printf("输入的时间格式错误!!请重新输入:\n");
         scanf("%s",p->data.leave);
        }
        //以上是客户离开时间格式的判断
  q->next=p;
        q=p;
        i++;
   }
   q->next=NULL;
   save(head);
   return head;
 }
 //宾馆信息的添加
 void Add(Linklist head,int b)
 {  int i=1;
  Listnode *m,*n,*p;
  m=head;
  n=m->next;
  while(n->next!=NULL)
  {
   m=n;
    n=m->next;
  }
  while(b--)
  {
        p=(Listnode*)malloc(sizeof(Listnode));
        printf("请输入第%d客户的姓名:\n",i);
  scanf("%s",p->data.name);
  printf("请输入客户的性别:\n");
  scanf("%s",p->data.sex);
  printf("请输入客户的省份证号:\n");
  scanf("%s",p->data.ID);
  if(strlen(p->data.ID)!=18)
  {printf("省份证号码输入错误!!请您重新输入:\n");
  scanf("%s",p->data.ID);}
  printf("请输入客户是否为VIP客户(0/1表示是与否!):\n");
  scanf("%s",p->data.V);
  printf("请输入客户所住的房间号:\n");
  scanf("%s",p->data.number);
  //客户入住的时间格式判断
        printf("请输入客户入住的日期:\n");
        scanf("%s",p->);
        if(p->[4]!='-'&&p->[7]!='-')
       { printf("输入日期的格式错误!!请重新输入:\n");
        scanf("%s",p->);}
        //以上是客户入住时间格式的判断
  printf("请输入客户入住的天数:\n");
  scanf("%s",p->data.day);
  printf("请输入客户入住房间的档次(1.普通房间(general)2.贵宾房间(visitant)3.高档房间(deluxe)):\n");
  scanf("%s",p->data.type);
  printf("请输入应该收取的费用:\n");
  scanf("%s",p->data.price);
  //客户离开的时间格式判断
        printf("请输入客户离开的时间:\n");
        scanf("%s",p->data.leave);
        if(p->data.leave[4]!='-'&&p->data.leave[7]!='-')
        {printf("输入的时间格式错误!!请重新输入:\n");
         scanf("%s",p->data.leave);
        }
        //以上是客户离开时间格式的判断
        n->next=p;
        n=p;
        i++;
  }
       n->next=NULL;
       save(head);
 }
 //按姓名查找客户信息
 Linklist Findname(Linklist head)
 {
  Linklist p;
  char name[5];
  int i;
  printf("***************************************************\n");
    printf("***************************************************\n");
    printf("请按1开始查询\n");
    p=head->next;
    scanf("%d",&i);
    if(i==1)
    {
     printf("请输入要查询的姓名:\n");
     scanf("%s",&name);
        while((p&&strcmp(p->data.name,name))==1)
  p=p->next;
  if(p==NULL||strcmp(p->data.name,name)!=0)
  p=NULL;
    }
    return p;
 }
 //按性别查找客户信息
 Linklist Findsex(Linklist head)
 {
  Linklist p;
  char sex[5];
  int i;
  printf("***************************************************\n");
    printf("***************************************************\n");
 printf("请按1开始查询:\n");
 p=head->next;
 scanf("%d",&i);
 if(i==1)
 {
  printf("请输入客户的性别:\n");
  scanf("%s",&sex);
  while((p&&strcmp(p->data.sex,sex))==1)
  p=p->next;
  if(p==NULL||strcmp(p->data.sex,sex)!=0)
  p=NULL;
 }
 return p;   
 }
 //按房间号查找客户信息
 Linklist Findfang(Linklist head)
 {
  Linklist p;
  char number[5];
  int i;
  printf("***************************************************\n");
    printf("***************************************************\n");
 printf("请按1开始查询:\n");
 p=head->next;
 scanf("%d",&i);
 if(i==1)
 {
  printf("请输入客户的房间号:\n");
  scanf("%s",&number);
  while((p&&strcmp(p->data.number,number))==1)
  p=p->next;
  if(p==NULL||strcmp(p->data.number,number)!=0)
  p=NULL;
 }
 return p;
 }
 //按客户入住的时间查询
 Linklist Findcome(Linklist head)
 {
  Linklist p;
  char come[15];
  int i;
  printf("***************************************************\n");
    printf("***************************************************\n");
 printf("请按1开始查询:\n");
 p=head->next;
 scanf("%d",&i);
 if(i==1)
 {
  printf("请输入客户的入住时间:\n");
  scanf("%s",&come);
  while((p&&strcmp(p->,come))==1)
  p=p->next;
  if(p==NULL||strcmp(p->,come)!=0)
  p=NULL;
 }
 return p;
 }  
 //客户信息的修改
 Linklist Alter(Linklist head)
 {
  Linklist p;
  p=Findname(head);
  if(p==NULL)
  {
   printf("该客户的信息不存在!!\n");
   //return;
     }
  else
  {
        printf("请输入客户的姓名:\n");
  scanf("%s",p->data.name);
  printf("请输入客户的性别:\n");
  scanf("%s",p->data.sex);
  printf("请输入客户的省份证号:\n");
  scanf("%s",p->data.ID);
  if(strlen(p->data.ID)!=18)
  {printf("省份证号码输入错误!!请您重新输入:\n");
  scanf("%s",p->data.ID);}
  printf("请输入客户是否为VIP客户(0/1表示是与否!):\n");
  scanf("%s",p->data.V);
  printf("请输入客户所住的房间号:\n");
  scanf("%s",p->data.number);
  //客户入住的时间格式判断
        printf("请输入客户入住的日期:\n");
        scanf("%s",p->);
        if(p->[4]!='-'&&p->[7]!='-')
       { printf("输入日期的格式错误!!请重新输入:\n");
        scanf("%s",p->);}
        //以上是客户入住时间格式的判断
  printf("请输入客户入住的天数:\n");
  scanf("%s",p->data.day);
  printf("请输入客户入住房间的档次(1.普通房间(general)2.贵宾房间(visitant)3.高档房间(deluxe)):\n");
  scanf("%s",p->data.type);
  printf("请输入应该收取的费用:\n");
  scanf("%s",p->data.price);
  //客户离开的时间格式判断
        printf("请输入客户离开的时间:\n");
        scanf("%s",p->data.leave);
        if(p->data.leave[4]!='-'&&p->data.leave[7]!='-')
        {printf("输入的时间格式错误!!请重新输入:\n");
         scanf("%s",p->data.leave);
        }
        //以上是客户离开时间格式的判断
     printf("客户信息已修改!!\n");  
  }
  save(head);
 }
 //客户信息的删除
 Linklist Delete(Linklist head)
 {
  Linklist p,q;
  int i;
  p=Findname(head);
  if(p==NULL)
  {
   printf("该客户的信息不存在!!\n");
  // return;
  }
  else{
   printf("如果要删除的话请按1:\n");
   scanf("%d",&i);
   if(i==1)
   {
    q=head;
    while(q!=NULL&&q->next!=p)
      q=q->next;
      q->next=p->next;
     free(p);
    printf("信息已删除!!\n");  
   }
  }
  save(head);
 }
 //宾馆信息的输出
 void  Show(Linklist head)
 {   read(head);
 /* Listnode *p,*q;
  q=head;
  p=q->next;
  printf("姓名 性别 身份证号 是否是VIP 入住的时间 入住的天数 如住房的档次 离开的时间\n");
  printf("**********************************************\n");
  while(q->next!=NULL)
  {
      printf("%4s%4s%20s%4s%4s%15s%4s%4s%4s%15s",p->data.name,p->data.sex,p->data.ID,p->data.V,p->data.number,p->,p->data.day,p->data.type,p->data.price,p->data.leave);
     p=p->next;
   
  }*/
   //read(head);
 
 }
  void save(Linklist head)
{  
   Linklist p,q;
 FILE *fp;
 p=head;
 p=p->next;
 if((fp=fopen("jiu.txt","wb"))==NULL)
  {
   printf("The file can not open\n");
   return;
  }
  for(q=p;q!=NULL;q=q->next)
   if(fwrite(q,sizeof(struct node),1,fp)!=1)
      {
       printf("file write error!\n");
       return;
      }
   fclose(fp);
}
void read(Linklist head)
{
 Linklist p,q;
 FILE *fp;
 p=head;
 p=p->next;
  if((fp=fopen("jiu.txt","rb"))==NULL)
  {
   printf("The file can not open\n");
   return;
  }
  while(!feof(fp))
  {
   q=p;q=q->next;
   fread(q,sizeof(struct node),1,fp);
   printf("\t\t客户的姓名:%s\n",q->data.name);
     printf("\t\t客户的性别:%s\n",q->data.sex);
     printf("\t\t客户的身份证:%s\n",q->data.ID);
     printf("\t\t客户是否为VIP:%s\n",q->data.V);
     printf("\t\t客户的入住房间号:%s\n",q->data.number);
     printf("\t\t客户的入住的时间:%s\n",q->);
     printf("\t\t客户的入住的天数:%s\n",q->data.day);
     printf("\t\t客户的入住房间的档次:%s\n",q->data.type);
     printf("\t\t客户的费用:%s\n",q->data.price);
     printf("\t\t客户的离开的时间:%s\n",q->data.leave);
 }
   fclose(fp);
}
 int menu()
 {  int i;
  printf("\n");
  printf("\n");
  printf("\n");
  printf("****************酒店信息系统管理**************\n");
  printf("**********************************************\n");
  printf("**********************************************\n");
  printf("                1.客户信息的新建              \n");
    printf("                2.客户信息的添加              \n");
 printf("                3.按客户姓名查询              \n");
 printf("                4.按客户性别查询              \n");
 printf("                5.按房间号查询                \n");
 printf("                6.按客户入住时间查询          \n");
 printf("                7.客户信息的修改              \n");
 printf("                8.客户信息的删除              \n");
 printf("                9.酒店信息的输出              \n");
 printf("                0.退出                        \n");
 printf("**********************************************\n");
 printf("**********************************************\n");
 printf("                 请选择0--9                   \n");
 for(;;)
 {
  scanf("%d",&i);
  if(i<0||i>9)
     printf("输入错误!!\n");
   else
      break;
 }
return i;  
 }
 int main()
 {
  for(;;)
 {
 switch(menu())
      {case 1: printf("**************客户信息的新建!**************\n");
            int i;
   printf("请输入客户的数目:\n");
   scanf("%d",&i);
   head=Creat(i);
   break;
    case 2: printf("**************客户信息的添加****************\n");  
      int a;
   printf("请输入你想要输入的人数:\n");
   scanf("%d",&a);
   Add(head,a);
   break;
       case 3: printf("***************按客户的姓名查询**************\n");
   p=Findname(head);
   if(p!=NULL)
   {   printf("********************************************\n");
                  printf("\t\t客户的姓名:%s\n",p->data.name);
           printf("\t\t客户的性别:%s\n",p->data.sex);
         printf("\t\t客户的身份证:%s\n",p->data.ID);
         printf("\t\t客户是否为VIP:%s\n",p->data.V);
         printf("\t\t客户的入住房间号:%s\n",p->data.number);
         printf("\t\t客户的入住的时间:%s\n",p->);
         printf("\t\t客户的入住的天数:%s\n",p->data.day);
         printf("\t\t客户的入住房间的档次:%s\n",p->data.type);
         printf("\t\t客户的费用:%s\n",p->data.price);
         printf("\t\t客户的离开的时间:%s\n",p->data.leave);
       printf("********************************************\n");
       printf("\n");
   }
   else
      printf("该客户的信息不在!!\n");
   break;
    case 4: printf("****************按客户的性别查询**************\n");
         p=Findsex(head);
   if(p!=NULL)
   {   printf("*********************************************\n");
       printf("\t\t客户的姓名:%s\n",p->data.name);
           printf("\t\t客户的性别:%s\n",p->data.sex);
         printf("\t\t客户的身份证:%s\n",p->data.ID);
         printf("\t\t客户是否为VIP:%s\n",p->data.V);
         printf("\t\t客户的入住房间号:%s\n",p->data.number);
         printf("\t\t客户的入住的时间:%s\n",p->);
         printf("\t\t客户的入住的天数:%s\n",p->data.day);
         printf("\t\t客户的入住房间的档次:%s\n",p->data.type);
         printf("\t\t客户的费用:%s\n",p->data.price);
         printf("\t\t客户的离开的时间:%s\n",p->data.leave);
          printf("*********************************************\n");
       printf("\n");
   }
   else
      printf("该客户的信息不在!!\n");
   break;
    case 5: printf("*****************按房间号查询*****************\n");
            p=Findfang(head);
      if(p!=NULL)
      {printf("******************************************\n");
       printf("\t\t客户的姓名:%s\n",p->data.name);
           printf("\t\t客户的性别:%s\n",p->data.sex);
         printf("\t\t客户的身份证:%s\n",p->data.ID);
         printf("\t\t客户是否为VIP:%s\n",p->data.V);
         printf("\t\t客户的入住房间号:%s\n",p->data.number);
         printf("\t\t客户的入住的时间:%s\n",p->);
         printf("\t\t客户的入住的天数:%s\n",p->data.day);
         printf("\t\t客户的入住房间的档次:%s\n",p->data.type);
         printf("\t\t客户的费用:%s\n",p->data.price);
         printf("\t\t客户的离开的时间:%s\n",p->data.leave);   
       printf("*********************************************\n");
       printf("\n");
       }
        else
       printf("该客户的信息不在!!\n");
        break;
    case 6: printf("*************按客户入住时间查询***************\n");
         p=Findcome(head);
   if(p!=NULL)
   {   printf("*********************************************\n");
       printf("\t\t客户的姓名:%s\n",p->data.name);
           printf("\t\t客户的性别:%s\n",p->data.sex);
         printf("\t\t客户的身份证:%s\n",p->data.ID);
         printf("\t\t客户是否为VIP:%s\n",p->data.V);
         printf("\t\t客户的入住房间号:%s\n",p->data.number);
         printf("\t\t客户的入住的时间:%s\n",p->);
         printf("\t\t客户的入住的天数:%s\n",p->data.day);
         printf("\t\t客户的入住房间的档次:%s\n",p->data.type);
         printf("\t\t客户的费用:%s\n",p->data.price);
         printf("\t\t客户的离开的时间:%s\n",p->data.leave);
       printf("*********************************************\n");
       printf("\n");
   }
   else
      printf("该客户的信息不在!!");
   break;
    case 7: printf("*************客户信息的修改********************\n");
            Alter(head);
      break;
    case 8: printf("*************客户信息的删除********************\n");
            Delete(head);
      break;
    case 9: printf("**************酒店信息的输出*******************\n");
            Show(head);
               break;
       case 0: break;
       }
 }
 }
搜索更多相关主题的帖子: 身份证号码 include number price 
2014-05-31 10:18
wu2782641803
Rank: 2
等 级:论坛游民
帖 子:65
专家分:46
注 册:2013-10-28
得分:0 
void save(Linklist head)
 {  
    Linklist p,q;
 FILE *fp;
 p=head;
 p=p->next;
 if((fp=fopen("jiu.txt","wb"))==NULL)
   {
    printf("The file can not open\n");
    return;
   }
   for(q=p;q!=NULL;q=q->next)
    if(fwrite(q,sizeof(struct node),1,fp)!=1)
       {
        printf("file write error!\n");
        return;
       }
    fclose(fp);
 }
 void read(Linklist head)
 {
 Linklist p,q;
 FILE *fp;
 p=head;
 p=p->next;
   if((fp=fopen("jiu.txt","rb"))==NULL)
   {
    printf("The file can not open\n");
    return;
   }
   while(!feof(fp))
   {
    q=p;q=q->next;
    fread(q,sizeof(struct node),1,fp);
    printf("\t\t客户的姓名:%s\n",q->data.name);
      printf("\t\t客户的性别:%s\n",q->data.sex);
      printf("\t\t客户的身份证:%s\n",q->data.ID);
      printf("\t\t客户是否为VIP:%s\n",q->data.V);
      printf("\t\t客户的入住房间号:%s\n",q->data.number);
      printf("\t\t客户的入住的时间:%s\n",q->);
      printf("\t\t客户的入住的天数:%s\n",q->data.day);
      printf("\t\t客户的入住房间的档次:%s\n",q->data.type);
      printf("\t\t客户的费用:%s\n",q->data.price);
      printf("\t\t客户的离开的时间:%s\n",q->data.leave);
 }
    fclose(fp);
 }
现在主要是这里有问题?不懂为什么写进去的数据读不出来(就是在关调系统后,再次打开直接读出上次保存的数据)?
2014-05-31 10:21



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




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

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