我正在尝试用C语言输入。我使用多个scanf
但它只需要一个输入然后退出。这是我的代码 -
/ * Approach- 我创建了类型帐户的结构和funciton create_account用户 输入帐户的详细信息。
算法 - 如果用户撤销,则在功能撤销中,在功能中减去平衡 存入,如果用户存入的余额添加到存放ammount, 在功能显示中,信息被置换
Implmentation- 它在下面。
结果 -
总结 - 可以通过维护用户及其信息的数据库来进一步改进 * /
#include <stdio.h>
#include <stdlib.h>
typedef struct account
{
char * bank_branch;
char * bank_name;
char * acc_holder_name;
int acc_no;
char * acc_holder_add;
float balance;
}account;
account * acc;
int acc_no=0;
void create_account()
{
printf("Enter bank branch\n");
scanf("%s",acc->bank_branch);
printf("Enter bank_name\n");
scanf("%s",acc->bank_name);
printf("Enter account holder name\n");
scanf("%s",acc->acc_holder_name);
printf("Enter account holder address\n");
scanf("%s",acc->acc_holder_add);
acc->acc_no=acc_no;
acc_no+1;
acc->balance=0;
}
void display_info()
{
printf("Bank branch=%s\n", acc->bank_branch);
printf("Bank Name=%s\n", acc->bank_name);
printf("Account holder name=%s\n",acc->acc_holder_name );
printf("Account holder address=%s\n",acc->acc_holder_add );
printf("Account number=%d\n",acc->acc_no );
printf("Balance=%f\n",acc->balance );
}
int main()
{
//creating a variable acc of type account
acc=malloc(sizeof(account));
create_account();
display_info();
}
进入银行分行后,不再需要任何进一步的输入。为什么会这样?
答案 0 :(得分:5)
其他参数应指向已分配的对象 由其中相应的格式说明符指定的类型 格式字符串。
在您的结构帐户中,您没有为char *
参数分配内存,那么当程序调用{{1}}时,您的程序将崩溃。
将scanf
替换为char *
,其中N是char表的大小,或者对于结构的每个char[N]
参数,使用malloc或calloc。