vs不能使用scanf?

写博原因:由于给新生讲题目用VS2019中编译的时候,遇到了如下问题:
在这里插入图片描述
于是我查了资料,学到了些东西。

来源百度:很多带“_s”后缀的函数是为了让原版函数更安全,传入一个和参数有关的大小值,避免引用到不存在的元素,有时黑客可以利用原版的不安全性黑掉系统。比如:char d[20];写成scanf_s("%s",d,20);才是正确的,有这个参数20使准确性提高。

scanf()函数是标准C中提供的标准输入函数,用以用户输入数据。

scanf_s()函数是Microsoft公司VS开发工具提供的一个功能相同的安全标准输入函数,从vc++2005开始,VS系统提供了scanf_s()。在调用该函数时,必须提供一个数字以表明最多读取多少位字符。

scanf()在读取数据的时候不会检查边界,如果编程的时候输入的数据大于分配的内存空间,进而会导致程序的运行异常,如果输入的数据达到了所请求的内存空间,则不会再读入数据,

例如:
char a[5];
scanf_s("%s",a,5);

因为定义的缘故,最多只能读取四个字符,当输入0123456789的时候,它也只会接受前4个字符。

【解决办法】:
方法一:在项目属性中---->配置属性------>C\C+±------>预处理器------->在右侧的预处理器定义中加入一行_CRT_SECURE_NO_DEPRECATE

方法二:在代码的第一行加一行 #pragma warning(disable:4996)

方法三:直接用在scanf后面加上_s,就可以消除警告,比较简单。

而当我用了scanf_s而不加限制的数量之后,也可以运行,而不像一定要有限制,如果有懂的朋友,可以留言区为我解答,如果我有写得不对的地方,也欢迎指正,谢谢。

回答: 在VS2022中,使用scanf函数可能会导致错误,因为VS2022认为scanf函数是不安全的。\[1\]为了解决这个问题,可以将scanf函数替换为scanf_s函数。scanf_s函数与scanf函数的功能相似,但更安全。只需将scanf替换为scanf_s即可。\[2\]另外,如果仍然想使用scanf函数,可以在源文件代码的第一行添加#pragma warning(disable: 4996)来禁用相关警告。\[2\]需要注意的是,scanf函数是一个输入流函数,用于从键盘读取值并将其赋给变量。在使用scanf函数时,应该传递变量的地址作为参数,以便修改变量的值。\[3\] #### 引用[.reference_title] - *1* [解决vs2022上关于scanf不可使用的问题](https://blog.youkuaiyun.com/C_2655531571/article/details/128737509)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [解决VS2022使用scanf函数时程序报错的问题](https://blog.youkuaiyun.com/amina2000/article/details/124534665)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [VS2022中关于scanf函数报错解决方法](https://blog.youkuaiyun.com/weixin_57663528/article/details/125077920)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值