我有这个代码:
Hotel new_h = (Hotel*)malloc(sizeof(Hotel));
printf("nInsert name -> ");
scanf("%[^n]s", new_h->name);
getchar();
首先,它是如何工作的 %[^]s
为什么扫描中没有 %s?
为什么也有 getchar?
在这种情况下,只有当您要在酒店名称后进行以下输入时才需要getchar()
函数,在这种情况下,我建议您在 %s 之前添加一个空格,就像这样scanf(" %[^n]s", new_h->name);
。
关于这一点malloc()
您对酒店的定义如何,因为它必须声明为指针,因此您可以为其分配内存将其转换为类型指针是不够的,它将导致段错误,您应该将其声明为
Hotel *new_h = malloc(sizeof(Hotel));
这是考虑到您将酒店定义为这样的东西
typedef struct{
//Some vars
}Hotel;