scanf_s函数

问题

1、vs2019环境下编写c中scanf()提示安全性问题
2、scanf_s()函数的报错
提示安全性问题:error C4996:‘scanf’:This function or variable may be unsafe.
char a;
scanf("%c",&a);     
解决方法:
1.对编译器环境进行设置。

在预处理器定义中添加 _CRT_SECURE_NO_DEPRECATE

2.改用scanf_s()

在vs2005之后的版本,微软定义scanf_s()代替scanf(),避免出现内存泄漏的问题。

在使用%c和%s读入字符或字符串时,应在地址参数后附加一个缓冲区边界值。

scanf_s()报错问题:
char a[22];
scanf_s("%s",&a);
报错:没有为格式字符串传递足够的参数
scanf()出于安全性考虑 在使用%c或%s读入单个字符或者字符串时,应在地址参数后附加一个缓冲区边界值。如:

注:缓冲区:scanf_s()函数从缓冲区读入一个数据项,该数据项在缓冲区就会被清除。scanf函数在接收到响应的数据之前,一直等待用户输入,直到接收到数据项,在缓冲区中清除该数据,scanf函数返回,程序继续执行。

scanf_s("%s",&a,10);

或者:

char a;
scanf_s("%c",&a,sizeof(a));

以上为个人学习理解。欢迎指正。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值