这是我使用的头文件:
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() 之前在主函数中声明了房间结构
struct room room[num_room];
我应该让用户输入为用户定义的房间数量存储一个字符串和两个整数。
expected identifier or '('
对于这些行,我不断收到错误消息:
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
我宣布它的方式有问题,但我不知道是什么。我已经看到了其中一些问题并尝试了几种不同类型的解决方案,但我不断收到类似的错误。
任何人都可以对此有所了解吗?我真的被困住了!非常感激!
PS如果有帮助,所有这些房间必须在创建后存储在双向链表中,门户[4]存储指向其他房间的指针。我不知道这是否对我的问题有任何影响,但额外的信息永远不会伤害任何人!