将数据输入结构时出现分段错误

时间:2019-05-01 08:59:45

标签: c struct segmentation-fault

我的作业正在使用C语言来: 1,定义一个结构体bankAccount,包括三个变量:id,name,balance。 2.stdin创建了五个用户,用户的初始余额由他自己设置。 3.Write存款和取款功能,允许用户存款和取款。 4. struct,enum,function(struct paramters),按引用传递将是您的 编码过程中的选择 问题在于,编译器一遍又一遍地显示分段错误,有解决方案吗?

-R

1 个答案:

答案 0 :(得分:1)

scanf希望将指针作为目标,更改

scanf("%d %s %d", user[number].id, user[number].name, user[number].balance);

scanf("%d %s %d", &user[number].id, user[number].name, &user[number].balance);

与此处相同:

scanf("%d %d", j, amount);

应该是

scanf("%d %d", &j, &amount);

此外,最好使用长度说明符,以防止在扫描字符串时缓冲区溢出:

scanf("%d %29s %d", ...而不是scanf("%d %s %d", ...

最后,您使用number作为索引在数组的边界之外进行书写

int number = 1;
...
for (int i = 0; i < 5; i++)
{
    printf("Please enter user%d's id, name, balance\n", number++);
    scanf("%d %s %d", user[number].id, ...
}

应该是

int number = 0;
...
for (int i = 0; i < 5; i++)
{
    printf("Please enter user%d's id, name, balance\n", number);
    scanf("%d %s %d", &user[number].id, ...
    number++;
}

或使用i作为索引。