gpt4 book ai didi

c - 将变量分配给结构体数组的成员时出现预期标识符或 '(' 错误

转载 作者:行者123 更新时间:2023-11-30 15:49:03 26 4
gpt4 key购买 nike

这是我使用的头文件:

 typedef struct room room;
struct room {
char name[21];
int num_doughnuts;
int num_milkshakes;
room* portal[4];
};

和我的代码:

struct room* create_room()
{
for(i = 0; i < num_room; i++)
{
room[i] = (struct room*)malloc(sizeof(room));
printf("input room details\n");
fgets(input, max_length, stdin);
sscanf(input, "%s %i %i", room_name, &dnuts, &mshakes);

strcpy(room[i].name, room_name); //assign name
room[i].num_doughnuts = dnuts; //assign doughnuts
room[i].num_milkshakes = mshakes; //assign milkshakes


}
return 0;

}

并且我在调用 create_room() 之前在主函数中声明了 room 结构

    struct room room[num_room];

我应该获取用户输入来存储用户定义的房间数量的字符串和两个整数。

我不断收到错误消息,指出这些行的预期标识符或“(”:

      room[i] = (struct room*)malloc(sizeof(room));
room[i].num_doughnuts = dnuts; //assign doughnuts
room[i].num_milkshakes = mshakes; //assign milkshakes

我还收到:意外类型“房间”:尝试分配名称时的预期表达式:

      strcpy(room[i].name, room_name);  //assign name

我声明的方式有问题,但我不知道是什么。我已经看到了其中一些问题,并尝试了几种不同类型的解决方案,但我不断收到类似的错误。

有人可以解释一下吗?我真的被困住了!非常感谢!

P.S 如果有帮助的话,所有这些房间在创建后都必须存储在双向链表中,并使用 Portal[4] 存储指向其他房间的指针。我不知道这是否对我的问题有任何影响,但额外的信息不会伤害任何人!

最佳答案

您编写了在主函数中声明的数组room。那么它在 create_rooms 中是不可见的。这意味着唯一可见的room是由typedef声明的type,这就是编译器提示的原因。

请注意,您无法将数组 room outside main 声明为 outside main,因为您已经使用了全局标识符 room 来声明类型typedef。 (为什么 main 中的声明不会生成编译错误?如果在 main 中完成,本地声明会隐藏全局声明,即类型 room 中不可见主要。)

解决方案:在 main 外部声明数组并以不同的方式命名。

关于c - 将变量分配给结构体数组的成员时出现预期标识符或 '(' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16473538/

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