gpt4 book ai didi

c - 如何使用结构体指针输入用户的值并显示结构体成员的值?

转载 作者:行者123 更新时间:2023-11-30 15:10:58 24 4
gpt4 key购买 nike

#include<stdio.h>
#include<string.h>

struct employee
{
int id;
char name[20];
float salary;
char addr[];
}*emp;

void get_emp(struct employee **record)
{

printf("\tplease enter details of employee:\n");

printf("id= ");
scanf("%d",(*record)->id);//code to get input value

printf("Name= ");
scanf(" %s",(*record)->name);

printf("salary= ");
scanf("%f",(*record)->salary);


}

int main()
{
get_emp(&emp);
printf("id=%d\n",emp->id); // code to display the value
printf("Name=%s\n",emp->name);
printf("salary=%f\n",emp->salary);


return 0;
}

我有一个结构示例,我想将结构指针传递给函数,而不使用普通变量而仅使用指针。函数 get_emp(struct employee **record) 中的参数(双指针)是否是正确的方法,如果不是应该进行哪些更改?另外,如何在函数 get_emp(struct employee **record) 中获取用户的输入值以及如何显示该值?

最佳答案

不需要双指针。您也可以使用单个指针来完成此操作。然而,您需要在填充该结构之前为其分配内存。

struct 员工 *emp = malloc(sizeof(struct 员工));

结构中 char addr[] 的大小也未定义。需要单独分配类似于:

emp->addr = malloc(N*sizeof(*emp->addr));

结构体中所有其他具有固定大小的字段(例如整数、浮点和 20 个元素的字符数组)不需要分配。它们的分配将由我们之前所做的 malloc 完成。然而,由于addr是一个指针,因此将为其保留相当于指针大小的内存。为了在 addr 指向的地址中存储任何内容,我们需要进行分配。

然后将 emp 传递给您的函数。删除双指针

关于c - 如何使用结构体指针输入用户的值并显示结构体成员的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35898299/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com