C语言 C6031 返回值被忽略scanf

原因

scanf()函数是不安全的(scanf()在读取数据时不检查边界,所以可能会造成内存访问越界)。例如:

#include <stdio.h>
int main() {
    int num1 = 0;
    int num2 = 0;
    int num3 = 0;
    int sum = 0;
    scanf("%d%d%d",&num1,&num2,&num3);
        sum = num1 + num2+num3;
        printf("%d\n", sum);

    return 0;
}

在这里插入图片描述
当用户输入1,2,3,4时,只会把前三个值赋值给 num1,num2,num3,第四个变量可能会赋值到内存其他空间上去,从而影响到程序的正常运行。

方法一

将scanf()函数换成scanf_s()函数。
例如:

#include <stdio.h>

int main() {
	int num1 = 0;
	int num2 = 0;
	int num3 = 0;
	int sum = 0;
	scanf_s("%d%d%d", &num1, &num2, &num3);
		sum = num1 + num2+num3;
		printf("%d\n", sum);
		
	return 0;
}

注意:在调用该函数时,必须提供一个数字以表明最多读取多少位字符(字符类型时,整数类型时跟scanf()函数相同),此函数只有在vs2013以上版本上能编译运行(其他软件编译会报错)

方法二

在上方加入 #define _CRT_SECURE_NO_WARNINGS 1(这样比较麻烦,每次创建一个文件要加一遍)

方法三

打开你的vs安装目录。(我的是vs2019,安装在D盘上的,默认应该是C:\Program Files (x86)\vs\Common7\IDE\VC\vcprojectitems,版本不同位置有差异。)
在这里插入图片描述
找到newc++file.cpp文件并打开(加入#define _CRT_SECURE_NO_WARNINGS 1并保存),这里推荐使用notepad++编辑保存,记事本保存会拒绝访问
在这里插入图片描述
新建.c文件就会自动加一句 #define _CRT_SECURE_NO_WARNINGS 1
在这里插入图片描述

简单的解决方式

直接换编译器,比如 sublim,Dev-C++

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值