FX–飞雪 2022-03-16 13:29 采纳率: 55.6%
浏览 262
已结题

这个为什么打印不了啊?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

  • 写回答

3条回答 默认 最新

  • 关注

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

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

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

    #define _CRT_SECURE_NO_WARNINGS 1
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月27日
  • 已采纳回答 3月19日
  • 创建了问题 3月16日