C - scanf 和 getchar 一起读取字符串



我有这个代码:

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;

最新更新