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