
曾看过这样一个话题,一个人真的会忙到,没有时间回你的消息吗?
评论区里最高赞的一条留言是,在这个手机不离身的年代里,
没有谁会真忙到没时间去回复一条信息。
等红灯的间隙,喝杯水的功夫,上厕所的空闲,
爱你的人,会在百忙之中为你抽空。
不爱你的人,总有推脱的借口,不得不承认被惦记,被理解,
被爱护,一直都是人生三大幸事,可是最伤感的莫过于,
你以为找到一个可以保护你的人,可是,后来的大风大浪都是他给的,
很多时候,理智的放弃,胜过盲目的执着。
—————————————— 一禅灵心庙语
#include<stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
printf("%d\n", num);
return 0;
}
error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

#include<stdio.h>
int main()
{
char arr[6] = { 0 };
scanf("%s", &arr);
printf("%s\n", arr);
return 0;
}
运行结果

解析
越界访问了,因为 scanf (不会关心你输入的数值,以及多少)输入之后,直接赋值,保存,这样就存在着越界,类型的不一致的问题出现,scanf 不会对空间越界上的判断,以及类型是否合适的判断好,所以被 VS 认为是不安全的
使用预处理的方式:解决
我们仔细阅读错误的提示信息,我们不难发现,提示信息是这样的
scanf 函数是不安全的,考虑使用 scanf_s 来替换,如果不想看到错误,也可以使用 _CRT_SECURE_NO_WARNINGS

#define _CRT_SECURE_NO_WARNINGS 1
#define _CRT_SECURE_NO_WARNINGS 1 // 放在第一行,
#include<stdio.h>
int main()
{
char arr[6] = { 0 };
scanf("%s", &arr);
printf("%s\n", arr);
return 0;
}
运行结果 我们是可以发现是不存在报错的问题的,编译生成成功了





因为 scanf_s 函数是由,微软中的 VS编译器 提供的,仅仅是在 微软 中支持的,在其他地方是不支持的,就是说,如果你的代码放在 gcc编译器 中编译,就会报错,因为它不认识 微软的这个 scanf_s 函数的,这样你的代码就不具有跨平台性了,而且 scanf 的使用方式和 scanf_s 函数的使用也又一定的区别:
而使用预处理 : #define _CRT_SECURE_NO_WARNINGS 1 是 C90 语法支持的
在头文件的下面,main 方法的前面加上: #pragma warning (disable:4996) 也是可以的
#pragma warning (disable:4996)
int main()
{
char arr[6] = { 0 };
scanf("%s", &arr);
printf("%s\n", arr);
return 0;
}
运行结果 也是没有问题的




运行结果 同样是没有问题的

限于自身水平,其中存在的错误希望大家,给予指教,韩信点兵 —— 多多益善,谢谢大家!,后会有期,江湖再见!