C语言学习 C6031 返回值被忽略: “scanf”。解决办法

在Vsual Stdio 2019调用scanf函数出现安全警告

在这里插入图片描述

方法1

在文件顶部添加代码: #pragma warning(disable:4996) 或者

 #define _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h> //#include<iostream>
                  //using namespace std;
int main()
{
    int h, f, x, y;
    printf("请输入鸡和兔的总头数:");//cout<<"请输入鸡和兔的总头数: "<<endl;
    scanf("%d", &h);//cin>>h;
    printf("请输入鸡和兔的总脚数:");//cout<<"请输入鸡和兔的总脚数:"<<endl;
    scanf("%d", &f);//cin>>f;
    x = (4 * h - f) / 2;
    y = (f - 2 * h) / 2;
    printf("鸡的头数为%d,兔的头数为%d", x,y);//cout<<"鸡的头数为"<<x<<",兔的头数为"<<x<<"头"<<endl;
    return 0;
}

方法2:

右击工程中源代码(main.c)处,打开属性栏>配置属性>C/C++>所有选项,将SDL检查改为否,保存
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

方法3:

scanf改为scanf_s
scanf等类似的函数已经不太安全,要想保证程序的安全性,建议以后采用_s结尾的安全版本,但是很多以前的程序可能还是使用不安全的版本。
整这个最有效,没有任何错误,完全正确!

#include<stdio.h> 
int main()
{
    int h, f, x, y;
    printf("请输入鸡和兔的总头数:");
    scanf_s("%d", &h);
    printf("请输入鸡和兔的总脚数:");
    scanf_s("%d", &f);
    x = (4 * h - f) / 2;
    y = (f - 2 * h) / 2;
    printf("鸡的头数为%d,兔的头数为%d", x,y);
    return 0;
}
  • 13
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
的确,在你提供的示例代码中,`scanf`函数的返回值忽略了。实际上,`scanf`函数的返回值对于错误处理和输入验证是非常重要的。 `scanf`函数的返回值表示成功读取并匹配到的参数个数。如果返回值与你期望的参数个数不一致,那么可能意味着输入格式错误或者输入结束。因此,建议在使用`scanf`函数时检查其返回值。 以下是一个修改后的示例,演示了如何正确处理`scanf`函数的返回值: ```c #include <stdio.h> #include <stdlib.h> int main() { int *ptr; int size, i; int result; printf("请输入要分配的整数个数:"); result = scanf("%d", &size); // 检查输入是否成功 if (result != 1) { printf("输入错误!\n"); return 1; } // 使用malloc函数动态分配内存 ptr = (int *)malloc(size * sizeof(int)); // 检查内存是否成功分配 if (ptr == NULL) { printf("内存分配失败!\n"); return 1; } // 向分配的内存中写入数据 printf("请输入整数:"); for (i = 0; i < size; i++) { result = scanf("%d", &ptr[i]); if (result != 1) { printf("输入错误!\n"); free(ptr); return 1; } } // 打印读取的整数 printf("输入的整数为:"); for (i = 0; i < size; i++) { printf("%d ", ptr[i]); } printf("\n"); // 释放分配的内存 free(ptr); return 0; } ``` 在这个修改后的示例中,我们在`scanf`函数调用后检查了其返回值。如果返回值不等于期望的参数个数,我们会输出错误消息并提前返回。这样可以更好地处理错误的输入。 通过正确处理`scanf`函数的返回值,我们可以更好地控制程序的为,并避免忽略潜在的输入错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值