| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1003 人关注过本帖
标题:C语言新人,作atm遇到问题,看了好久不知道哪里错了。求大神帮忙
只看楼主 加入收藏
Ysm888
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-3-18
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
C语言新人,作atm遇到问题,看了好久不知道哪里错了。求大神帮忙
大一学生
正在做查询功能,查询的那个功能最后
printf("在%d存入了%d",b.inyear,b.inmoney);
printf("在%d取出了%d",b.outyear,b.outmoney);
输出的是4个都是-858993460.不知道是哪里错了,又大神帮我一下吗谢谢



#include<stdio.h>
void newid();
void save();
void draw();
void research();
struct record
{
  int inyear;
  int outyear;
  int inmoney;
  int outmoney;
  int nowmoney;

};
struct id
{
    char number[15];//用户名
    int balance;//余额
};
void newid()
{
 struct id newone;
 char filename[15];
 FILE *a,*b;
 printf("请输入要新建的用户名:");
 scanf("%s",filename);
 if((a=fopen(filename,"rb+"))!=NULL)
    {
    printf("用户名已存在");
    fclose(a);
    return;
    }
 b=fopen(filename,"wb+");
 printf("请再次输入新建用户名:");
 scanf("%s",newone.number);
 printf("请输入账号余额:");
 scanf("%d",&newone.balance);
 fwrite(&newone,sizeof(struct id),1,b);
 fclose(b);
 printf("输入成功");
}


void save()
{   
   
   
    FILE *in;
    char filename[15];
    struct id a,b;
    struct record c;
    printf("请输入用户名:");
    scanf("%s",filename);
    if((in=fopen(filename,"rb+"))==NULL)
    {
     printf("输入错误,该用户不存在");
     fclose(in);
     return;
    }
    printf("请再次输入用户名:");
    scanf("%s",a.number);
    fread(&b,sizeof(struct id),1,in);
    printf("输入你的存款日期");
    scanf("%d",&c.inyear);//日期
    printf("输入存钱金额");
    scanf("%d",&c.inmoney);
    c.nowmoney=b.balance+c.inmoney;
    a.balance=c.nowmoney;
    printf("操作成功\n");
    printf("当前账号余额为:%d",c.nowmoney);
    fwrite(&c,sizeof(struct record),1,in);
    fseek(in,0L,0);
    fwrite(&a,sizeof(struct id),1,in);
    fclose(in);

}
 void draw()
 {FILE*in;
 struct id a,b;
 struct record c;
 char filename[15];
 printf("请输入用户名:");
 scanf("%s",filename);
 if((in=fopen(filename,"rb+"))==NULL)
    {
     printf("输入错误,该用户名不存在");
     fclose(in);
     return;
    }
printf("请再次输入用户名:");
scanf("%s",a.number);
fread(&b,sizeof(struct id),1,in);
printf("请输入取款日期");
scanf("%d",&c.outyear);
printf("请输入取款金额:");
scanf("%d",&c.outmoney);
c.nowmoney=b.balance-c.outmoney;
a.balance=c.nowmoney;
printf("操作成功");
printf("当前余额为%d",c.nowmoney);
fwrite(&c,sizeof(struct record),1,in);
fseek(in,0L,0);
fwrite(&a,sizeof(struct id),1,in);
fclose(in);

}

void research()
{   FILE *in;
    char filename[15];
    struct id a;
    struct record b;

    printf("请输入账号名");
    scanf("%s",filename);
if((in=fopen(filename,"rb+"))==NULL)
{
 printf("该用户名不存在");
 fclose(in);
 return;
}
fread(&a,sizeof(struct id),1,in);
fread(&b,sizeof(struct record),1,in);
printf("当前账号余额为%d",a.balance);
printf("在%d存入了%d",b.inyear,b.inmoney);
printf("在%d取出了%d",b.outyear,b.outmoney);
fclose(in);
 
}

int main()
{
    newid();
    save();
    draw();
    research();
    return 0 ;

}
搜索更多相关主题的帖子: research 大一学生 balance include 用户名 
2017-03-18 19:02
Ysm888
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-3-18
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
输出是这个结果
2017-03-18 19:04
烟雨晨曦
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:7
帖 子:150
专家分:599
注 册:2017-3-5
收藏
得分:20 
你每次用读写的方式打开,又在修改文件,肯定会出现这种情况。

给你几个个建议
1.读完信息后把文本信息记录下来,清空文本,再记录下本次操作更新后一起写入文件。
2.以追加写的方式打开文本,每次添加修改信息。
3.不要用文本来保存信息,特别是需要动态更新的。(不过你没什么特殊需求,就用上面两种方式就可以了)。

2017-03-19 00:18
快速回复:C语言新人,作atm遇到问题,看了好久不知道哪里错了。求大神帮忙
数据加载中...
 
   



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

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