scanf和getchar一起读取字符串

时间:2019-05-29 09:42:07

标签: c string scanf getchar

我有此代码:

Hotel new_h = (Hotel*)malloc(sizeof(Hotel));
printf("\nInsert name -> ");
scanf("%[^\n]s", new_h->name);
getchar();

首先,它如何工作%[^ \ n] s

为什么scanf中不仅只有%s?

为什么还有getchar?

1 个答案:

答案 0 :(得分:0)

在这种情况下,getchar()函数仅在您要在酒店名称之后输入以下内容时才需要,在这种情况下,我建议您仅在%s之前添加一个空格,例如{ {1}}。

关于scanf(" %[^\n]s", new_h->name);,您对酒店的定义如何,因为必须将其声明为指针,因此您可以为其分配内存以将其强制转换为指针类型,这还不够,它会导致segfault,您应该将其声明为

malloc()

这是在考虑您将酒店定义为这样的

Hotel *new_h = malloc(sizeof(Hotel));