C++ 开发问题:‘strcpy‘: This function or variable may be unsafe. Consider using strcpy_s instead.
C++ 开发问题:'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead.
·
#include <iostream>
#include <string.h>
...
char src[40] = "This is the source string";
char dest[40];
strcpy(dest, src);
printf("源字符串: %s\n", src);
printf("目标字符串: %s\n", dest);
- 在 C++ 开发中,执行上述代码,报如下错误
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.
# 翻译
'strcpy': 此函数或变量可能不安全
请考虑改用 strcpy_s
若要禁用此弃用警告,请使用 _CRT_SECURE_NO_WARNINGS
查看在线帮助以获取详细信息
问题原因
strcpy()函数被标记为不安全,编译器建议使用更安全的替代函数strcpy_s()
strcpy()函数
char* strcpy(char* dest, const char* src);
| 参数 | 类型 | 说明 |
|---|---|---|
dest |
char* |
目标缓冲区指针,用于存储复制后的字符串的内存地址 |
src |
const char* |
源字符串指针,要复制的字符串的地址 |
strcpy_s()函数
errno_t strcpy_s(char *dest, rsize_t dest_size, const char *src);
| 参数 | 类型 | 说明 |
|---|---|---|
dest |
char* |
目标缓冲区指针,用于存储复制后的字符串的内存地址 |
dest_size |
rsize_t |
目标缓冲区大小 |
src |
const char* |
源字符串指针,要复制的字符串的地址 |
处理策略
- 推荐使用更安全的
strcpy_s()函数
#include <iostream>
#include <string.h>
...
char src[40] = "This is the source string";
char dest[40];
strcpy_s(dest, sizeof(dest), src);
printf("源字符串: %s\n", src);
printf("目标字符串: %s\n", dest);
- 通过
#define _CRT_SECURE_NO_WARNINGS禁用警告
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string.h>
...
char src[40] = "This is the source string";
char dest[40];
strcpy(dest, src);
printf("源字符串: %s\n", src);
printf("目标字符串: %s\n", dest);
更多推荐




所有评论(0)