我有此代码:
Hotel new_h = (Hotel*)malloc(sizeof(Hotel));
printf("\nInsert name -> ");
scanf("%[^\n]s", new_h->name);
getchar();
首先,它如何工作%[^ \ n] s
为什么scanf中不仅只有%s?
为什么还有getchar?
答案 0 :(得分:0)
在这种情况下,getchar()
函数仅在您要在酒店名称之后输入以下内容时才需要,在这种情况下,我建议您仅在%s之前添加一个空格,例如{ {1}}。
关于scanf(" %[^\n]s", new_h->name);
,您对酒店的定义如何,因为必须将其声明为指针,因此您可以为其分配内存以将其强制转换为指针类型,这还不够,它会导致segfault,您应该将其声明为
malloc()
这是在考虑您将酒店定义为这样的
Hotel *new_h = malloc(sizeof(Hotel));