忽略安全检测后,scanf函数返回值仍然被忽略的问题

本人打算写一个扫雷游戏,写了一小部分 测试了一下
发现报错
scanf返回值被忽略
我知道这是因为vs 认为这个函数不安全
但是我在前面加了
#define _CRT_SECURE_NO_WARNINGS//忽略安全检测
还是继续报错
以下是我的代码:

#include <stdio.h>
#include "game.h"//这是我自己创建的头文件

#define _CRT_SECURE_NO_WARNINGS

void menu()
{
printf(" \n");
printf(" 1.play 2.exit \n");
printf(" \n");
}

void game()
{
printf("扫雷\n");
}

void test()
{
int input = 0;
do
{
menu();
printf("请选择>>");
scanf("%d", &input);//这里报错
switch (input)
{
case 1:
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
break;
}
} while (input);
}

int main()
{
test();
return 0;
}

我前一天跟着教程写井字棋游戏 也使用了scanf()函数
也加了
#define _CRT_SECURE_NO_WARNINGS//忽略安全检测
但是未报错;
想知道为什么会继续报错;
感谢解答!

vs中一般用s_scanf,如果硬要使用scanf需要进行设置一下,右键文件属性页,选择窗口最下方的sdl检查选择否就可以了

img

vs里面用scanf_s

你应该检查函数返回值,并进行相应错误处理。比如下面是输入的错误处理。

// ...

if (scanf("%d", &input) != 1) {
    printf("输入错误\n")
    return 1;
}

// ...

https://docs.microsoft.com/en-us/cpp/code-quality/c6031?view=msvc-170

下次直接用scanf_s吧