m0_69358180 2022-09-09 09:37 采纳率: 100%
浏览 41
已结题

strcpy函数调试时报错显示unsafe

关于strcpy函数:
有一小段代码如下:

#include<stdio.h>
#include<string.h>

int main()

{
char cPrice1[50]="包子一元一个";

puts("原来的招牌内容是:");
printf("\t%s\n", cPrice1);

strcpy(cPrice1, "包子壹元壹个");
printf("\t%s\n", cPrice1);
return 0;

}

调试时出现以下报错:

严重性 代码 说明 项目 文件 行 禁止显示状态
错误 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. 2022090801 D:\Malloy_outer_trace\VSprojects\2022090801\源.c 70

更改函数为strcpy_s后,仍然报错:
显示(修改行):
1、严重性 代码 说明 项目 文件 行 禁止显示状态
错误(活动) E0165 函数调用中的参数太少 2022090801 D:\Malloy_outer_trace\VSprojects\2022090801\源.c 69
2、严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2198 “strcpy_s”: 用于调用的参数太少 2022090801 D:\Malloy_outer_trace\VSprojects\2022090801\源.c 69

不知道这里参数太少什么意思,我看教科书上代码,strcpy函数也能正常使用,为什么这里就unsafe了呢?
strcpy和strcpy_s的用法一样吗?
谢谢解答[rose]!

  • 写回答

3条回答 默认 最新

  • 快乐鹦鹉 2022-09-09 09:39
    关注

    改用strcpy_s
    用法与strcpy差不多,但多一个字符串最大长度的参数,确保目标字符串不会溢出
    改为:
    strcpy_s(cPrice1,,60,"包子壹元壹个");

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月17日
  • 已采纳回答 9月9日
  • 创建了问题 9月9日