【发布时间】:2021-12-25 02:36:14
【问题描述】:
我正在学习指针、结构和 AoS 以及它们之间的关系,我试图制作一个简单的 C 代码,它使用指针从用户那里获取输入。但是,无论我尝试什么,我都遇到了 Seg 错误,例如在代码中:每当我尝试输入余额时,代码在每次运行时都会崩溃,如果代码不正确,为什么在名称或 accno 输入,以及执行此任务的正确方法。
void input(struct bankacc b[],int n){
struct bankacc *ptr=NULL;
ptr=b;
for(;ptr<(b+n);ptr+=1)
{
printf("Enter name: ");
scanf("%s",(ptr)->name);
printf("Enter account number: ");
scanf("%d",ptr->accno);
printf("Enter balance: ");
scanf("%f",ptr->balance);
printf("_____ \n");
}}
【问题讨论】:
-
scanf("%d", ptr->accno);也应该是scanf("%d", &ptr->accno);和ptr->balance。打开编译器警告。 -
@WeatherVane 确实可以以某种方式工作,但您能否解释一下原因或方式,或提供一些有效的来源。 tysm。
-
因为
ptr->accno是数据值,而不是scanf函数族需要的成员地址。然而(ptr)->name衰减指向数组第一个元素的指针。
标签: arrays c pointers struct segmentation-fault