鱼C论坛

 找回密码
 立即注册
查看: 1885|回复: 4

[已解决]vs2019scanf和scan_s的区别

[复制链接]
发表于 2020-11-4 09:37:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
int main(void)
{
        int ASCII;
        printf("Please enter a ASCII.\n");
        scanf("%d",&ASCII);
        printf("%d ASCII is related to %c",ASCII,ASCII);
       
        return 0;
}   
此代码在vs2019中报错
#include<stdio.h>
int main(void)
{
        int ASCII;
        printf("Please enter a ASCII.\n");
        scanf_s("%d",&ASCII);
        printf("%d ASCII is related to %c",ASCII,ASCII);
       
        return 0;
}   
改为scan_s即可运行,求助各位大神这两者的区别是什么?
刚学c的萌新
最佳答案
2020-11-4 09:54:17
本帖最后由 昨非 于 2020-11-4 10:01 编辑

scnaf()在读取时不检查边界,可能会存在内存泄漏的问题,而scanf_s()在读取时检查边界是一种更加安全的函数
参考https://blog.csdn.net/fuyongshen ... 1018.2118.3001.4449
vs2019里scanf会引起安全性问题
不过除了改成scanf_s以外,也可以在首行加上
#define _CRT_SECURE_NO_WARNINGS  
来解决
满意的话请给个最佳
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-4 09:52:47 | 显示全部楼层

都可以的!是不是报C4996,那只是建议你使用 _s 的而已!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-4 09:54:17 | 显示全部楼层    本楼为最佳答案   
本帖最后由 昨非 于 2020-11-4 10:01 编辑

scnaf()在读取时不检查边界,可能会存在内存泄漏的问题,而scanf_s()在读取时检查边界是一种更加安全的函数
参考https://blog.csdn.net/fuyongshen ... 1018.2118.3001.4449
vs2019里scanf会引起安全性问题
不过除了改成scanf_s以外,也可以在首行加上
#define _CRT_SECURE_NO_WARNINGS  
来解决
满意的话请给个最佳
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-4 10:39:59 | 显示全部楼层
昨天朋友告诉我,设置一下VS2019即可,你试试

VS设置.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-4 10:49:11 | 显示全部楼层
本帖最后由 jackz007 于 2020-11-4 10:53 编辑

    scanf_s() 与 scanf() 在大部分情况下的用法完全一样,唯一不同的地方,就是在输入字符串的时候,需要同时给定一个整型数参数,告诉 scanf_s(),用于保存字符串的字符数组的实际容量,以防止存储空间的越界使用。
#include <stdio.h>

int main(void)
{
        char s[256]                          ;
        printf("your name please : ")        ;
        scanf_s("%s" , s , 256)              ;
        printf("hello, %s, how are you ?\n") ;
}

      就楼主的代码而言,使用 scanf_s() 与使用 scanf() 没有任何区别,只需要直接换函数名就可以了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 17:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表