关闭

15、VS2013编写程序时scanf出现的编译错误

244人阅读 评论(0) 收藏 举报
分类:

今天随手练习一下桶排序算法,很简单如下:

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>

//#define _CRT_SECURE_NO_DEPRECATE

int _tmain(int argc, _TCHAR* argv[])
{
int a[11];
int i, j, input;

for (i = 0; i < 10; i++)
{
a[i] = 0;
}

printf("请输入5个整数,输入的整数范围在0-10之间\n");
for (i = 0; i < 5; i++)//这里这输入了5个数,练习一下
{
scanf("%d", &input);
if (input > 0 && input < 10){
a[input]++;
}
else{
printf("please input correct number!\n");
break;
}
}

for (i = 0; i < 10; i++)
{
for (j = 1; j < a[i]; j++)//出现几次打印几次
printf("%d",i);
}
system("pause");//用于暂留显示

return 0;
}

却发现了一个问题:错误 1 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. c:\users\sheng\documents\visual studio 2013\project

原因是Visual C++ 2012 使用了更加安全的 run-time library routines 。新的Security CRT functions(就是那些带有“_s”后缀的函数)解决方法如下:

1. 更改预处理定义:  

项目->属性->配置属性->C/C++ -> 预处理器 -> 预处理器定义,增加: _CRT_SECURE_NO_DEPRECATE

网上其他方法就不推荐了,这个修改后就一劳永逸了。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4639次
    • 积分:212
    • 等级:
    • 排名:千里之外
    • 原创:16篇
    • 转载:1篇
    • 译文:1篇
    • 评论:0条