这个为什么打印不了啊?vs2022

#include<stdio.h>
#define PRAISE "YOU are an extraordinary being."
int main(void)
{
char name[40];
printf("What's you**r name? ");
scanf_s("%s",name);
printf("Hello, %s. %s\n", name, PRAISE);
return 0;
}

运行结果及报错内容

已启动生成…
1>已启动生成: 项目: 测试, 配置: Debug x64
1>Test.c
1>D:\VS2022\测试\Test.c(166,10): warning C4473: “scanf_s”: 没有为格式字符串传递足够的参数
1>D:\VS2022\测试\Test.c(166,10): message : 占位符和其参数预计 2 可变参数,但提供的却是 1 参数
1>D:\VS2022\测试\Test.c(166,10): message : 缺失的可变参数 2 为格式字符串“%s”所需
1>D:\VS2022\测试\Test.c(166,10): message : 此参数用作缓冲区大小
1>测试.vcxproj -> D:\VS2022\测试\x64\Debug\测试.exe
1>已完成生成项目“测试.vcxproj”的操作。

严重性 代码 说明 项目 文件 行 禁止显示状态
警告 C6064 缺少“scanf_s”的整型参数(对应于转换说明符“2”)。 测试 D:\VS2022\测试\Test.c 166
警告 C4473 “scanf_s”: 没有为格式字符串传递足够的参数 测试 D:\VS2022\测试\Test.c 166

方法一:
把scanf_s("%s",name);改成

scanf_s("%s", name,40);

方法二:
把scanf_s("%s",name);改成 scanf("%s",name);
在文件的第一行添加如下代码:(一定要在第一行)

#define _CRT_SECURE_NO_WARNINGS 1

程序开头加上这个再运行看看

#define _CRT_SECURE_NO_WARNINGS

或者用scanf函数

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#define PRAISE "YOU are an extraordinary being."
int main(void)
{
char name[40];
printf("What's you**r name? ");
scanf("%s",name);
printf("Hello, %s. %s\n", name, PRAISE);
return 0;
}


您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632