问题一:程序的输出在屏幕上一闪而过。
某些窗口环境会在单独的窗口运行程序,然后在程序运行结束后自动关闭窗口。
在Microsoft Visual Studio中设置如下:
右击解决方案资源管理器中的项目名——属性-配置属性——链接器——系统——子系统-控制台 (/SUBSYSTEM:CONSOLE)
另一种解决方法,在程序的return语句前添加一行代码:getchar();
这行代码会让程序等待击键,窗口会在用户按下一个键后才关闭。在原代码中有需要击键的指令时,需要添加两行getchar();
问题二: ' scanf ': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.
原代码如下:
# include<stdio.h>
int main()
{
int num1 = 0;
int num2 = 0;
int sum = 0;
scanf("%d%d", &num1, &num2);
sum = num1 + num2;
printf("sum=%d\n", sum);
}
scanf_s必须提供一个数字以表明最多读取多少位字符。另外,很多带“_s”后缀的函数是为了让原版函数更安全,传入一个和参数有关的大小值,避免引用到不存在的元素。但这个函数只有VS有,如果想避免此警告可以在代码第一个行输入以下内容:
#define _CRT_SECURE_NO_WARVINGS 1
为了在每次创建源文件是都自动输入上述代码,在安装路径找到文件newc++file.cpp
(我的路径为 E:\VisualStudio2015\VC\vcprojectitems)
用记事本打开,将#define _CRT_SECURE_NO_WARNINGS 1复制进去,保存就可以了。
如果提示没有权限,可以使用软件Notepad++或SubmileText打开,复制保存。
对于是否要使用_s的函数,可以根据代码情况决定,若已经确定代码的使用环境只有VS,那可以使用,这符合C标准的建议“让程序运行更快,即使不能保证其可移植性。”
关于 printf_s 和 scanf_s 用法可自行百度。