关于scanf报错的问题

img


按照教程使用宏定义:#define _CRT_SECURE_NO_WARNINGS
但scanf还是报错。
是vs2022

#include<stdio.h>
int main()
{
    char s[10];
    printf("请输入字符串:\n");
    scanf_s("%s",s);//用scanf_s()代替
    printf("%s",s);
    return 0;
}

用scanf_s("%s",s,10);

你截图的代码可能是ceshi.c,但报错的是源1.c,你应该看后面这个源1.c的代码有没那个#define放最上面。

scanf是不安全的函数,编译器让你改成使用scanf_s函数。

scanf_s("%s", s, sizeof(s));

后面增加了一个指定长度的参数,限制输入数据的最大长度,直接用sizeof计算数组s的总长度就可以。

想这么使用的话需要加成 #define _CRT_SECURE_NO_WARNINGS 1
再教一个方法 找到我们安装VS的目录newc++file.cpp目录搜索这个找到这个文件之后右击-打开方式-记事本在里边输入#define _CRT_SECURE_NO_WARNINGS 1保存即可。到这里如果你可以正常保存那就不用往下看了。你每次创建一个新的源文件的时候你就会发现它自己就给你的最上方加入了#define _CRT_SECURE_NO_WARNINGS 1 如果保存失败的话新建一个记事本使用管理员权限打开然后进入记事本打开那个文件目录再加进去 就可以了 记得保存