scanf函数是从标准输入去获取数据,C语言中默认用空格为界限去控制输入的长度。比如scanf("%d%d",&a,&b);当执行到这句代码时候,你需要在显示屏输入两个数字,用空格分割开。比如你输入了10 20。系统会识别到这是两个字符串,将其存储指定位置。
可是今天我想输入的是scanf("%s%s",&s1,&s2);我要输入的s1是I am Bob!,s2是What is your name?
系统很难识别那部分是s1,那部分是s2,很容易造成越界访问的问题,所以visual studio会提示不安全的函数。visual studio 在解决这个问题的时候实现了一个scanf_s的函数。这个函数有三个参数第三个参数是从标准输入获取的数据长度的长度。
scanf("%s",&s1,10);这个函数并不是C语言标准的函数,只是vistual studio 平台的函数,如果你使用scanf_s这样的函数,你的代码不能再其它平台跑。所以不建议使用scanf_s函数。
建议使用#define _CRT_SECURE_NO_WARNINGS将这个错误规避掉。(这句加粗必看,前面可以不看)
接下来给大家介绍一种偷懒方法:我们在平时学习过程中经常会用到scanf函数,为了不让它再出现这类问题,由于我的VS安装在D盘,所以我打开了它,找到了如上路径,在VC->newc file中加入#define _CRT_SECURE_NO_WARNINGS,保存退出。
以后我每次新建一个新项目,就会有这么一句话。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>//标准库头文件
#include<stdlib.h>//包含system()函数的头文件
int main()
{
int a = 0;
scanf("%d", &a);
system("pause");
return 0;
}
五、VS常用调试程序快捷键
调试:编译程序F7
运行程序ctrl F5
打断点F9
运行到断点位置F5
单步执行F10
单步进入函数F11
结束调试shift F5
编辑 :注释选定内容Ctrl K,Ctrl C
取消注释选定内容Ctrl K,Ctrl U
删除行Ctrl Shift L删除所有选定行;如果没有选定行,则删除当前行。
六、VS的调试窗口在F10单步调试状态下,打开调试->窗口,调试窗口中有监视(可用来监视变量等),内存,线程,堆栈,寄存器,反汇编等窗口用来帮助调试程序。可以通过这些窗口配合逐步调试,查看程序中的运行状况,分析bug可能产生的原因。最常用的就是监视窗口来查看变量的变化情况。有时候监视窗口会和内存窗口显示结果不一致,那肯定要相信内存窗口,监视窗口数据可能来自于寄存器。
七、工具->选项除此之外,还要会对编译器设置,方法是打开工具->选项,进行各种设置,比如字体大小、颜色、格式等等。