- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个项目,一个使用 c 语言文件和结构的 ATM 帐户系统。现在,除了存款/取款功能之外,我几乎所有功能都已关闭。如果我没记错的话,您只需读取文件并调用要在算术运算中使用的变量,然后将其写回文件以更新它。
如果用户为所述变量输入一个新值,它就可以正常工作(但我不能这样做,因为用户可以随意更改他/她的帐户余额)。
但是当我这样做时,它不起作用。
简而言之,我的问题是我的交易(用户输入存款金额,系统将该金额添加到保存在二进制文件中的用户帐户余额中,然后系统获取新的这两个金额的总和)帐户余额然后覆盖旧帐户余额)具体不起作用,我的结构和用户输入变量没有相加
这是我的功能
void deposit()
{
system("cls");
FILE *fp,*fp1;
struct acc rec,rec1;
int id,pinc,found=0,count=0;
float dv=0,wv=0;
fp=fopen(fname,"rb");
fp1=fopen("tempacc.dat","wb");
printf("\nEnter Account No :");
scanf("%d",&id);
printf("\nEnter PIN :");
scanf("%d",&pinc);
while(1)
{
fread(&rec,sizeof(rec),1,fp);
if(feof(fp))
{
break;
}
if(rec.no==id && rec.pin==pinc)
{
found=1;
printf("current balance:%0.2f",&rec.id);
printf("\nEnter initial deposit:");
scanf("%d",&rec.id);
printf("\nEnter Deposit value:");
scanf("%f",dv);
rec.id = rec.id + dv; <--- (this part doesn't work)
printf("\nNew Account Balance:%f",rec.id);
fwrite(&rec,sizeof(rec),1,fp1);
}
else
{
fwrite(&rec,sizeof(rec),1,fp1);
}
}
fclose(fp);
fclose(fp1);
if(found==0)
{
printf("Sorry No Record Found\n\n");
}
else
{
fp=fopen(fname,"wb");
fp1=fopen("tempacc.dat","rb");
while(1)
{
fread(&rec,sizeof(rec),1,fp1);
if(feof(fp1))
{
break;
}
fwrite(&rec,sizeof(rec),1,fp);
}
}
fclose(fp);
fclose(fp1);
}
我的主要内容
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct acc
{
int no;
char name[100];
int pin;
float id;
};
void append();
void display();
void displayAll();
void modify();
void search();
void deposit();
char mygetch();
char fname[]={"accdb.dat"};
int main()
{
char ch;
while(1)
{
system("cls"); //clrscr();
printf("==================Welcome to Banking System=============\n\n");
printf("A. Open an Account \n\n");
printf("B. Bank transaction \n\n");
printf("C. Exit\n\n");
//printf("D. Display\n\n");
//printf("E. Display All\n\n");
//printf("F. Search\n\n");
printf("========================================================\n\n");
printf("\nPlease enter your Choice:");
scanf("%c",&ch);
switch(ch)
{
case 'A': append();
break;
case 'B': modify();
break;
case 'C': exit(0);
case 'D': display();
break;
case 'E': displayAll();
break;
case 'F': search();
break;
}
mygetch();
}
return 0;
}
void append()
{
system("cls");
FILE *fp;
struct acc rec;
fp=fopen(fname,"ab");
printf("\nEnter Account no:");
scanf("%d",&rec.no);
getchar();
printf("\nEnter Account name:");
scanf("%[^\n]s",rec.name);
printf("\nEnter PIN:");
scanf("%d",&rec.pin);
printf("\nEnter Initial Deposit:");
scanf("%f",&rec.id);
fwrite(&rec,sizeof(rec),1,fp);
fclose(fp);
}
void display()
{
system("cls");
FILE *fp;
struct acc rec;
int id,found=0;
fp=fopen(fname,"rb");
printf("\nEnter the account number:");
scanf("%d",&id);
while(1)
{
fread(&rec,sizeof(rec),1,fp);
if(feof(fp))
{
break;
}
if(rec.no==id)
{
found=1;
printf("\n========================================================\n\n");
printf("\t\t Account Details of %d\n\n",rec.no);
printf("========================================================\n\n");
printf("Name\tBalance\n\n");
printf("%s\t",rec.name);
printf("%0.2f\t\n\n",rec.id);
printf("========================================================\n\n");
}
}
if(found==0)
{
printf("\nSorry No Record Found");
}
fclose(fp);
}
void deposit()
{
system("cls");
FILE *fp,*fp1;
struct acc rec,rec1;
int id,pinc,found=0,count=0;
float dv=0,wv=0;
fp=fopen(fname,"rb");
fp1=fopen("tempacc.dat","wb");
printf("\nEnter Account No :");
scanf("%d",&id);
printf("\nEnter PIN :");
scanf("%d",&pinc);
while(1)
{
fread(&rec,sizeof(rec),1,fp);
if(feof(fp))
{
break;
}
if(rec.no==id && rec.pin==pinc)
{
found=1;
printf("current balance:%0.2f",&rec.id);
printf("\nEnter initial deposit:");
scanf("%d",&rec.id);
printf("\nEnter Deposit value:");
scanf("%f",dv);
rec.id = rec.id + dv;
//scanf("%f",&rec.id);
printf("\nNew Account Balance:%f",rec.id);
//scanf("%f",&rec.id);
fwrite(&rec,sizeof(rec),1,fp1);
//fflush(stdin);
}
else
{
fwrite(&rec,sizeof(rec),1,fp1);
}
}
fclose(fp);
fclose(fp1);
if(found==0)
{
printf("Sorry No Record Found\n\n");
}
else
{
fp=fopen(fname,"wb");
fp1=fopen("tempacc.dat","rb");
while(1)
{
fread(&rec,sizeof(rec),1,fp1);
if(feof(fp1))
{
break;
}
fwrite(&rec,sizeof(rec),1,fp);
}
}
fclose(fp);
fclose(fp1);
}
void search()
{
FILE *fp;
struct acc rec;
int found=0;
char name[20];
fp=fopen(fname,"rb");
printf("\nEnter the Account Name:");
scanf("%s",&name);
while(1)
{
fread(&rec,sizeof(rec),1,fp);
if(feof(fp))
{
break;
}
if(strcmp(name,rec.name)==0)
{
printf("\n========================================================\n\n");
printf("\t\t Account Details of %d\n\n",rec.no);
printf("========================================================\n\n");
printf("Name\tbalance\n\n");
printf("%s\t",rec.name);
printf("%0.2f\t\n\n",rec.id);
printf("========================================================\n\n");
}
}
if(found==0)
{
printf("\nSorry No Record Found");
}
fclose(fp);
}
void displayAll()
{
system("cls");
FILE *fp;
struct acc rec;
fp=fopen(fname,"rb");
printf("\n========================================================\n\n");
printf("\t\t All Account Details\n\n");
printf("========================================================\n\n");
printf("ID\tName\tPIN\tBalance\n\n");
while(1)
{
fread(&rec,sizeof(rec),1,fp);
if(feof(fp))
{
break;
}
printf("%d\t",rec.no);
printf("%s\t",rec.name);
printf("%d\t",rec.pin);
printf("%0.2f\t\n\n",rec.id);
}
printf("========================================================\n\n");
fclose(fp);
}
char mygetch()
{
char val;
char rel;
scanf("%c",&val);
scanf("%c",&rel);
return (val);
}
void modify()
{
system("cls");
FILE *fp,*fp1;
struct acc rec,rec1;
int id,pinc,found=0,count=0;
fp=fopen(fname,"rb");
fp1=fopen("tempacc.dat","wb");
printf("\nEnter Account No:");
scanf("%d",&id);
printf("\nEnter PIN:");
scanf("%d",&pinc);
while(1)
{
fread(&rec,sizeof(rec),1,fp);
if(feof(fp))
{
break;
}
if(rec.no==id && rec.pin==pinc)
{
found=1;
int sch;
printf("\tWelcome to Banking System\n");
printf("1.Balance Inquiry\n");
printf("2.Deposit\n");
printf("3.Withdrawal\n");
printf("4.quit\n");
scanf("%d",&sch);
switch (sch)
{
case 1:
display();
break;
case 2:
fclose(fp);
deposit();
break;
case 3:
//withdrawal();
break;
case 4:
printf("Thank you for your patronage\n");
exit(0);
break;
}
}
}
}
最佳答案
由于缺乏更多详细信息,我猜测您的 scanf
组合实际上是在读取 %d%f
,即立即读取十进制数后面跟着一个 float 。如果是这样的话,它应该可以工作,在某种程度上:如果您输入123.456
,它应该接受初始存款123
和新存款 0.456
.
但我猜你的意思是让用户输入两个不同的数字,并在它们之间输入。如果是这样,您的输入将是第一个数字,然后是换行符,然后是第二个数字。您需要将其解析为 %d %f
(因为空格可以匹配任意数量的空白,包括换行符)。如果您不希望第一个 scanf
等到第一个数字后的第一个非空格,我建议您在第二个 scanf
中包含空格,即进行扫描“%f”
。
如果所有这些都是错误的,很可能您的 scanf
仍然有问题,因此您应该对此进行错误检查。阅读手册,看看有效输入应该返回什么,然后让你的代码提示,如果这不是它得到的。
关于c - 如何在算术运算中使用文件中的结构变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55418704/
我想做的是让 JTextPane 在 JPanel 中占用尽可能多的空间。对于我使用的 UpdateInfoPanel: public class UpdateInfoPanel extends JP
我在 JPanel 中有一个 JTextArea,我想将其与 JScrollPane 一起使用。我正在使用 GridBagLayout。当我运行它时,框架似乎为 JScrollPane 腾出了空间,但
我想在 xcode 中实现以下功能。 我有一个 View Controller 。在这个 UIViewController 中,我有一个 UITabBar。它们下面是一个 UIView。将 UITab
有谁知道Firebird 2.5有没有类似于SQL中“STUFF”函数的功能? 我有一个包含父用户记录的表,另一个表包含与父相关的子用户记录。我希望能够提取用户拥有的“ROLES”的逗号分隔字符串,而
我想使用 JSON 作为 mirth channel 的输入和输出,例如详细信息保存在数据库中或创建 HL7 消息。 简而言之,输入为 JSON 解析它并输出为任何格式。 最佳答案 var objec
通常我会使用 R 并执行 merge.by,但这个文件似乎太大了,部门中的任何一台计算机都无法处理它! (任何从事遗传学工作的人的附加信息)本质上,插补似乎删除了 snp ID 的 rs 数字,我只剩
我有一个以前可能被问过的问题,但我很难找到正确的描述。我希望有人能帮助我。 在下面的代码中,我设置了varprice,我想添加javascript变量accu_id以通过rails在我的数据库中查找记
我有一个简单的 SVG 文件,在 Firefox 中可以正常查看 - 它的一些包装文本使用 foreignObject 包含一些 HTML - 文本包装在 div 中:
所以我正在为学校编写一个 Ruby 程序,如果某个值是 1 或 3,则将 bool 值更改为 true,如果是 0 或 2,则更改为 false。由于我有 Java 背景,所以我认为这段代码应该有效:
我做了什么: 我在这些账户之间创建了 VPC 对等连接 互联网网关也连接到每个 VPC 还配置了路由表(以允许来自双方的流量) 情况1: 当这两个 VPC 在同一个账户中时,我成功测试了从另一个 La
我有一个名为 contacts 的表: user_id contact_id 10294 10295 10294 10293 10293 10294 102
我正在使用 Magento 中的新模板。为避免重复代码,我想为每个产品预览使用相同的子模板。 特别是我做了这样一个展示: $products = Mage::getModel('catalog/pro
“for”是否总是检查协议(protocol)中定义的每个函数中第一个参数的类型? 编辑(改写): 当协议(protocol)方法只有一个参数时,根据该单个参数的类型(直接或任意)找到实现。当协议(p
我想从我的 PHP 代码中调用 JavaScript 函数。我通过使用以下方法实现了这一点: echo ' drawChart($id); '; 这工作正常,但我想从我的 PHP 代码中获取数据,我使
这个问题已经有答案了: Event binding on dynamically created elements? (23 个回答) 已关闭 5 年前。 我有一个动态表单,我想在其中附加一些其他 h
我正在尝试找到一种解决方案,以在 componentDidMount 中的映射项上使用 setState。 我正在使用 GraphQL连同 Gatsby返回许多 data 项目,但要求在特定的 pat
我在 ScrollView 中有一个 View 。只要用户按住该 View ,我想每 80 毫秒调用一次方法。这是我已经实现的: final Runnable vibrate = new Runnab
我用 jni 开发了一个 android 应用程序。我在 GetStringUTFChars 的 dvmDecodeIndirectRef 中得到了一个 dvmabort。我只中止了一次。 为什么会这
当我到达我的 Activity 时,我调用 FragmentPagerAdapter 来处理我的不同选项卡。在我的一个选项卡中,我想显示一个 RecyclerView,但他从未出现过,有了断点,我看到
当我按下 Activity 中的按钮时,会弹出一个 DialogFragment。在对话框 fragment 中,有一个看起来像普通 ListView 的 RecyclerView。 我想要的行为是当
我是一名优秀的程序员,十分优秀!