前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >解决error C6031 返回值被忽略:“scanf“&解决error C4996: ‘fopen‘(scanf): This function or variable may be unsafe.

解决error C6031 返回值被忽略:“scanf“&解决error C4996: ‘fopen‘(scanf): This function or variable may be unsafe.

作者头像
用户11404404
发布2024-12-13 19:43:06
发布2024-12-13 19:43:06
2980
举报
文章被收录于专栏:Edward的专栏Edward的专栏

老规矩,看前先点赞+关注。。。。。。。。。。。。。。。。。。。。。。。。。。。。

刚入坑c语言的伙伴可能会出现以下问题:

这是为什么呢?

C语言的标准函数中,一些读取或写入内存的函数存在内存越界的问题,从而使得内存数据变得不安全。如scanf、gets、strcat、fopen等函数都存在着这样的问题。 为了避免这个问题,在VS中,另外提供了如scanf_s,get_s,strcat_s、fopen_s等相关的改进函数,来替代原来的标准函数的功能,并通过添加内存读取范围的限制来解决不安全的问题。

当然,上诉情况仅会出现在.cpp文件中,实际上,如果同学们只是学c语言,没必要保存源程序为.cpp文件,因为.cpp文件是C++语言运行环境。一般来说,如文件后缀为.cpp,则编译器默认采用C++语法标准进行编译;如文件后缀为.c,则编译器默认采用C语法标准进行编译。而C++部分兼容C,C语言程序既可以保存为.c文件,也可以保存为.cpp文件;而C++程序则只能保存为.cpp程序。因此,在.cpp文件写代码时,就会发生上诉安全警告。

但总是这样_s,感觉看着怪怪的,而且同学问你为何要_s时,你也不好解释。 在实际的应用中,也许使用VS提供的安全函数会更加合理。但是,在学习中,几乎所有的课本以及教程都使用的原来的标准函数,另外考虑到移植性的问题,除了VS环境,其他环境中并没有提供改进后的函数。因此,我们通常任然需要标准的库函数来实现相关功能。 但是,如果在VS中使用原始的函数,编译器将会报错。这对使用和学习都带来了相当的不变。

那么该如何解决呢,我这儿提供两个非常简洁且高效的方法:

1、如果你仅仅是编写c语言程序,将源程序保存为.c文件,就不会出现上诉安全警告。(下图示例)

(1)若还未新建源文件,直接新建时改后缀名:

点击源文件添加新建项

修改.cpp文件为.c文件,点击添加即可

(2)若已新建,并且写完代码

找到解决方案管理器

右键该源文件,选择重命名(.c即可)

2.直接在源文件最前面加上“#define _CRT_SECURE_NO_WARNINGS”,直接暴力秒杀

您的点赞和关注是我更新下去的动力!!!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-11-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档