fgets在visual studio中的独有问题

这样输入的话是正常的


void inputNode(Node* p)
{
    printf("请输入书的编号:");
    scanf("%d", &(p->book.number)); getchar();
    printf("请输入书的名字:");
    //fgets(p->book.name, MAXSIZE, stdin); 
    scanf("%s", &(p->book.name));
    printf("请输入书的价格:");
    scanf("%d", &(p->book.price)); getchar();
    printf("请输入书的分类:");
    scanf("%s", &(p->book.clas));
    //fgets(p->book.clas, MAXSIZE, stdin); 
}

img

这是正常的流程

但是如果把输入字符串的scanf换成fgets就会卡住

img

输入字符并按回车后就卡住了。
在visual studio中是这样,但是在vscode中就不会出现这个问题。
调试的时候出现这个
0x00007FF826D2916F (ucrtbased.dll)处(位于 Project1.exe 中)引发的异常: 0xC0000005: 读取位置 0xFFFFFFFFFFFFFFFF 时发生访问冲突。
请问一下怎么解决?

fgets是C语言标准库文件处理的一个函数,是用来读取文件的,并不是获取输入的

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^