| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 374 人关注过本帖
标题:【求助】这个程序可以运行但是无法保存文件,是什么原因呢,高手帮帮忙啊
只看楼主 加入收藏
uponshiwo
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-10-1
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:2 
【求助】这个程序可以运行但是无法保存文件,是什么原因呢,高手帮帮忙啊
#include<stdio.h>
#include<stdlib.h>
#define X 25
#define N 12
struct name{
       char xing[X];
       char ming[X];
       };
struct feiji{
       int hao;
       int kong;
       struct name xm;
       };
void caidan(void);/*选择菜单*/
void qk(void);/*清空输入行*/
int kn(struct feiji *pr); /*空座数量*/
void lb(struct feiji *pr);/*空座位号*/
void xs(struct feiji *pr);/*有座乘客*/
void dz(struct feiji *pr);/*订座程序*/
void tz(struct feiji *pr);/*退座程序*/
int main(void)
{
    struct feiji zw[N];
    struct name pp={"",""};
    for(int p=0;p<N;p++)
    {
            zw[p].hao=p+1;
            zw[p].kong=0;
            zw[p].xm=pp;
            }
    FILE *fp;
    if((fp=fopen("14.18.8wb.txt","r+b"))==NULL)
    {
       puts("打开文件错误,退出程序!");
       system("pause");
       exit(1);
                                               }
    int n=0;
    while(n<N&&fread(&zw[n],sizeof(struct feiji),1,fp))
        n++;
    caidan();
    int ch;
    while((ch=getchar())!='f')
    {
          qk();
          switch(ch)
          {
                    case 'a':kn(zw);break;
                    case 'b':lb(zw);break;
                    case 'c':if(kn(zw)==0)
                             {
                                puts("本机暂无乘客!");
                                caidan();break;
                                          }
                             else  
                             {
                                  xs(zw);break;
                                   }
                    case 'd':dz(zw);break;
                    case 'e':tz(zw);break;
                    default:puts("输入错误,重新输入!");
                            caidan();continue;
                    }
          }
    fwrite(zw,sizeof(struct feiji),N,fp);
    fclose(fp);
    system("pause");
    return 0;
    }
void caidan(void)
{
     printf("\nTo choose a function,enter its letter lable(选择一个功能,进入其字母标签):\n"
            "a)Show number of empty seats(显示空座位数量)\n"
            "b)Show list of empty seats(显示空座位列表)\n"
            "c)Show alphabetical list of seats(乘客名字顺序显示座位)\n"
            "d)Assign a customer to a seat assignment(订座程序)\n"
            "e)Delete a seat assignment(退座程序)\n"
            "f)Quit\n");
     }
void qk(void)
{
     while(getchar()!='\n')
        continue;
     }
int kn(struct feiji *pr)
{
     int n=0;
     for(int p=0;p<N;p++)
         if((pr+p)->kong==0)
            n++;
     printf("空座位数量是%d\n",n);
     caidan();
     return N-n;
     }
void lb(struct feiji *pr)
{
     for(int p=0;p<N;p++)
         if((pr+p)->kong==0)
            printf("%d号\n",p+1);
     caidan();
     }
void xs(struct feiji *pr)
{
     for(int p=0;p<N;p++)
        if((pr+p)->kong==1)
           printf("%d号座位,%s%s\n",(pr+p)->hao,(pr+p)->xm.xing,(pr+p)->xm.ming);
     caidan();
     }
void dz(struct feiji *pr)
{
     int p=0;
     while(p<N)
     {
        if((pr+p)->kong==0)
        {
           puts("请输入你的姓");
           gets((pr+p)->xm.xing);
           puts("请输入你的名");
           gets((pr+p)->xm.ming);
           printf("您的座位号是%d号\n",(pr+p)->hao);
           (pr+p)->kong=1;
           caidan();  
           break;
                         }
        p++;
           }
     if(p==N)
     {
        puts("座位已满!");
        caidan();
             }
     }
void tz(struct feiji *pr)
{
     struct name temp={"",""};
     int n;
     puts("输入您要退的座位号:");
     while(scanf("%d",n)==1)
     {
          if(n<=N&&n>0)
          {
              if((pr+n-1)->kong==1)
              {
                 (pr+n-1)->kong=0;
                 (pr+n-1)->xm=temp;
                 puts("您的座位已退!");
                 break;
                                 }
                      }
          else
             puts("输入错误,重新输入!");
                            }
     caidan();
     }
/*这个程序运行后进入d选择输入姓名以后按f关闭这个程序,重新运行程序后进入a选择,得到的结果是12,但是应该是11啊,到底是什么原因呢*/


[ 本帖最后由 uponshiwo 于 2012-5-7 20:58 编辑 ]
搜索更多相关主题的帖子: void 原因 include 座位号 
2012-05-07 20:55
Dick_G
Rank: 2
等 级:论坛游民
帖 子:21
专家分:84
注 册:2012-4-7
收藏
得分:7 
if((fp=fopen("14.18.8wb.txt","r+b"))==NULL)
 应该是rb+
2012-05-07 22:01
uponshiwo
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-10-1
收藏
得分:0 
回复 2楼 Dick_G
改了rb+也不行啊~
2012-05-07 23:19
快速回复:【求助】这个程序可以运行但是无法保存文件,是什么原因呢,高手帮帮忙 ...
数据加载中...
 
   



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

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