c语言结构体 sigsegv,C语言 函数调用一个由malloc获得的指向多个结构体大小的首地址,如何给这个储存空间赋值?...

本文介绍了在C语言中遇到的一个关于结构体数组输入函数的错误,错误提示表明对非结构体或非联合成员的访问请求。问题出在函数`input_info`的参数传递上。解决方案是将`struct person*`类型的指针改为`struct person**`,以便正确地访问结构体成员。同时,文章讨论了使用`malloc`动态分配内存存储多个结构体的正确性,并提供了修正后的代码。
摘要由CSDN通过智能技术生成

struct person {

char id[11];

char name[21];

char sex[7];

int age;

char phone[12];

};

void input_info (struct person *info[], int total_people) {

int counter;

for (counter=0; counter

scanf("%s", &info[counter].id);

scanf("%[^\n]", &info[counter].name);

scanf("%s", &info[counter].sex);

scanf("%d", &info[counter].age);

scanf("%s", &info[counter].phone);

}

}

int main (void) {

struct person *person_info = malloc(sizeof(struct person)*3);

input_info(&person_info, 3);

free(person_info);

return 0;

}

新手,写一个简单的人物信息记录程序

我的思路是创建一个结构体,然后用malloc申请人数x结构体大小的内存,用于存放人物信息,上面是我的代码(精简到了只涉及此问题以及编译器报错的部分)。

但是编译器给出了这样的错误提示:

person_infor_sys.c: In function 'input_info':

person_infor_sys.c:41:29: error: request for member 'id' in something not a structure or union

scanf("%s", &info[counter].id);

^

person_infor_sys.c:44:33: error: request for member 'name' in something not a structure or union

scanf("%[^\n]", &info[counter].name);

^

person_infor_sys.c:47:29: error: request for member 'sex' in something not a structure or union

scanf("%s", &info[counter].sex);

^

person_infor_sys.c:50:29: error: request for member 'age' in something not a structure or union

scanf("%d", &info[counter].age);

^

person_infor_sys.c:53:29: error: request for member 'phone' in something not a structure or union

scanf("%s", &info[counter].phone);

^

导致此问题的原因是什么?应该如何解决?

由或者说我这样使用malloc来储存多个结构体的思路本来就是错误的?

更新:01-25-2016

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值