在c中取%s的输入

时间:2016-04-24 00:32:33

标签: c

我正在尝试用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();
}

进入银行分行后,不再需要任何进一步的输入。为什么会这样?

1 个答案:

答案 0 :(得分:5)

来自cplusplus.com scanf

  

其他参数应指向已分配的对象   由其中相应的格式说明符指定的类型   格式字符串。

在您的结构帐户中,您没有为char *参数分配内存,那么当程序调用{​​{1}}时,您的程序将崩溃。

scanf替换为char *,其中N是char表的大小,或者对于结构的每个char[N]参数,使用malloc或calloc。