gpt4 book ai didi

创建结构数组 (c)

转载 作者:太空宇宙 更新时间:2023-11-04 05:25:09 24 4
gpt4 key购买 nike

我创建了一个结构“Employee”

#define MAX_SIZE 20

typedef struct Employee{
char name[MAX_SIZE];
int s;
int e;
} employee_s;

我需要创建一个由 2 名员工组成的数组并要求用户初始化它们,但我尝试的任何方法似乎都不起作用,

void main()
{
int i, s, e;
char name[10];
Employee* e[3];

*e = (Employee*)malloc(sizeof(Employee)*ARR_SIZE);

for(i=0; i < 3; i++)
{
fflush(stdin);
puts("Please enter Employee's name:");
scanf("%c",&name);
*e[i]->name = name;

puts("Please enter Employee's salary:");
scanf("%d",&s);
*e[i]->s= s;

puts("Please enter Employee's experience:");
scanf("%d",&e);
*e[i]->e=e;

}
}

p.s: 我不必使用动态分配,
我做错了什么?

谢谢!

最佳答案

这里有几个错误:

  • Employee 不是有效类型。 struct Employee 是,employee_s 也是。
  • e 在多个地方定义
  • 读取name时,使用%s(对于字符串),而不是%c(对于字符)
  • 您的员工数组被定义为指针数组。那可能不是你想要的。你只需要一个数组。也没有调用 malloc
  • 从不 fflush(stdin)。这是未定义的行为。
  • 在您的 scanf 调用中,将空格作为字符串中的第一个字符。这将允许传递任何换行符。

结果:

int main()
{
int i;
employee_s e[3];

for(i=0; i < 3; i++)
{
puts("Please enter Employee's name:");
scanf(" %s",&e[i].name);

puts("Please enter Employee's salary:");
scanf(" %d",&e[i].s);

puts("Please enter Employee's experience:");
scanf(" %d",&e[i].e);
}

for(i=0; i < 3; i++) {
printf("emp %d: name=%s, sal=%d, exp=%d\n", i, e[i].name, e[i].s, e[i].e);
}
}

关于创建结构数组 (c),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32357476/

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