当前位置: 首页 > news >正文

编程技能:字符串函数04,直接使用 strcpy,解决报错

专栏导航

本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏,故划分为两个专栏导航。读者可以自行选择前往哪个专栏。

(一)WIn32 专栏导航

上一篇:编程技能:字符串函数03,strncpy

回到目录

下一篇:无

(二)MFC 专栏导航

上一篇:编程技能:字符串函数03,strncpy

回到目录

下一篇:无

本节前言

在之前的两节里,我们讲解了 strcpy 和 strncpy 。在之前的讲解里,我们说了 Visual Studio 不支持直接使用 strcpy 与 strncpy 。可是,假定,我们的确是想要直接在 Visual Studio 里面使用这俩函数,要如何做呢?

本节,我们就来解决这一问题。

一.    使用 strcpy 时候的报错信息

直接在 VS2010 或者 VS2019 里面使用 strcpy 和 strncpy,出现的报错信息是一样的,解决方法也一样。因此,我们以 strcpy 的报错处理为例,来讲解处理报错的方法。

本节,我们所使用的代码如下。

#include <stdio.h>
#include <string.h>int main(void)
{char dst[100];char src[] = "Windows Proggraming Designment";strcpy(dst, src);printf("目的字符串:%s", dst);return 0;
}

接下来,请大家自行新建解决方案,并添加上述代码块中的代码。

关于新建解决方案,添加代码与编译的方法,大家可以参照下面的链接所示 的文章。

Windows编程:使用 VS2010 编写 C语言程序-CSDN博客

Windows编程:用 VS2019 编写C语言程序-CSDN博客

大家在依次点选【生成 -> 生成解决方案】菜单命令,编译了上述的代码以后,Visual Studio 会报错。我这里,是使用 VS2019 来编译的。 VS2019 的报错信息如下。

图1

其中的部分文字,我把它展示在下面。

错误    C4996    'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

这段文字的中文翻译如下。

错误  C4996     ` strcpy `:此函数或变量可能不安全。建议考虑改用 strcpy_s。要禁用弃用,请使用  _CRT_SECURE_NO_WARNINGS。有关详细信息,请参阅在线帮助。

这段文字的意思大概是说,Visual Studio 禁止直接使用 strcpy,因为觉得它不安全。所以呢,建议你使用安全的 strcpy_s 。如果你想要让 VS2019 允许直接使用 strcpy,请使用  _CRT_SECURE_NO_WARNINGS 参数。

那么,问题在于,我们如何来使用  _CRT_SECURE_NO_WARNINGS 参数,以便让 VS2019 允许我们直接使用 strcpy 呢?

下一分节来讲解此问题。

二.    使用  _CRT_SECURE_NO_WARNINGS 参数

请大家和我一起来做。

我们依次点选【项目】,【属性】菜单命令,如下图所示。

图2

如图2 所示,我们要点选的,是这个含有【属性】字样的菜单项。我们在称呼它的时候,把它叫做【属性】菜单项。然而,实际显示的时候,要看我们是在哪个项目里面。如果,我们正处于 X1 项目里面,则此菜单项,显示的文字为【X1 属性】。如果我们正处于【K30】项目里,则此菜单项显示的文字为【K30 属性】。

不论这个【属性】菜单项的【属性】二字的左边是什么项目名称,我们都把它叫做【属性】菜单。

按照图2 的指示,点选了【项目 -> 属性】菜单命令以后,会弹出如下图所示的对话框。

图3

在图3的左边,有一个选项,名为【C/C++】,它的左边,还有一个三角号。如下图所示。

图4

如图4 的红色框线所示,在我的截图里面,这个三角号是空心和向右的。如果你的三角号跟我的一样,也是空心向右的,那么,请你点击一下这个三角号,使其变为实心形状,并展开【C/C++】里面的内容。如下图所示。

图5

在图5 里面,大家点选一下红色框线所示的【预处理器】选项。结果如下图所示。

图6

在图6里面,大家关注一下红色框线所示的选项,它的选项名称为【预处理器定义】,在它的右边,是【预处理器定义】选项的内容。我们用鼠标左键单击【预处理器定义】选项名称的右边一栏的位置,会出现如下变化。

图7

如图7 的红色框线所示,在【预处理器定义】选项名称的右边一栏的右侧,出现了向下的箭头符号。我们点击这个箭头符号,在弹出的选项我们点击【编辑】字样,过程如下图所示。

图8
图9

在图9 的红色框线的位置,所指示的白色区域,是一个多行文本编辑框。我们单击它,并且滚动鼠标滚轮,将位置定位到最下面,如下图所示。

图10

此时,我们按下回车键,另起一行,然后输入【 _CRT_SECURE_NO_WARNINGS】,结果如下图所示。

图11

然后呢,我们点击【预处理器定义】对话框下方的【确定】按钮,回到属性页对话框。如下图所示。

图12

然后在【属性页】对话框中,我们继续点击下方的【确定】按钮,回到软件主界面。

图13

回到了软件主界面以后,我们依次点选【生成】,【生成解决方案】菜单命令,以重新编译解决方案。结果如下。

图14

看到了吧?成功了。

接下来,我们依次点选【调试】,【开始执行(不调试)】菜单命令,结果如下。

图15

这样的话,我们的程序就算是编译和运行成功了。接下来,大家可以关闭图15所示的黑窗口,也可以关闭 Visual Studio 了。

本节所讲的,使用 _CRT_SECURE_NO_WARNINGS 参数的方法,我会将其发布在下面的连接所示的 Gitee 网站里。

Gitee 仓库:VC++软件使用知识点

在这里,对于 _CRT_SECURE_NO_WARNINGS 参数的使用方法,它算是一种零散的知识点。

我认为,对于这样的一种零散的知识点,我们遇到了以后,可以及时将其记录下来,以便查找,方便以后得使用。

结束语

到了这里,我们这一节的内容,也就讲完了。

其实, Visual Studio 的功能很强大。随着我们的使用经验的增多,渐渐地会用到它的许多强大的功能的。

本节结束。

专栏导航

本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏,故划分为两个专栏导航。读者可以自行选择前往哪个专栏。

(一)WIn32 专栏导航

上一篇:编程技能:字符串函数03,strncpy

回到目录

下一篇:无

(二)MFC 专栏导航

上一篇:编程技能:字符串函数03,strncpy

回到目录

下一篇:无

http://www.xdnf.cn/news/454465.html

相关文章:

  • 【Lua】java 调用redis执行 lua脚本
  • 影响力最小化
  • React学习———React.memo、useMemo和useCallback
  • LeetCode100.7 接雨水
  • 【python爬虫】python+selenium实现Google Play Store应用信息爬虫+apk下载
  • 内存泄漏系列专题分析之十四:高通相机CamX ION/dmabuf内存管理机制ImageBuffer之GrallocBuffer原理
  • 代码随想录算法训练营Day58
  • 01-three.js vite基础示例
  • 机器视觉助力轨道缺陷检测
  • Python常用魔术方法
  • 分布式2(限流算法、分布式一致性算法、Zookeeper )
  • 解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs-强化学习算法AlphaGo
  • sqlalchemy库详细使用
  • 【C++】17. 多态
  • AI智能体应用平台-智能体定制-企业级agent开发平台哪个更好?
  • 【嵌入式开发-按键扫描】
  • 从构想到交付:专业级软开发流程详解
  • c++中的函数(默认参数,占位参数,重载)
  • Arduino使用红外收发模块
  • MySQL基础之开窗函数
  • 嵌入式(c语言篇)Day9
  • 基于nacos2.5.1的java微服务项目开发环境配置简介
  • Spyglass:跨时钟域同步(同步单元)
  • Gin 框架指南(代码+通俗解析版)
  • 2025前四月新能源汽车出口增长52.6%,外贸ERP数字化助力汽企持续跃升
  • 给 DBGridEh 增加勾选用的检查框 CheckBox
  • 通用软件项目技术报告 - 导读I
  • C++ 并发编程(1)再学习,为什么子线程不调用join方法或者detach方法,程序会崩溃? 仿函数的线程启动问题?为什么线程参数默认传参方式是值拷贝?
  • 阿里的库存秒杀实现与Inventory Hint技术解析
  • Windows系统Anaconda/Miniconda的安装、配置、基础使用、清理缓存空间和Pycharm/VSCode配置指南