gw_1024 2014-11-23 08:28 采纳率: 100%
浏览 2316
已采纳

strcpy函数赋值时遇到问题

char string[7];

char* str1 = "0123456789";

printf("%s",strcpy( string, str1 ));

为什么数组string的空间小于 字符串“0123456789”,但是依然输出0123456789;
还有strcpy函数是以什么方式进行赋值的?

  • 写回答

2条回答 默认 最新

  • Himess 2014-11-23 09:43
    关注

    (1)在运行该代码时,提示Debug Error:Run-Time Check Failure #2 - Stack around the variable 'string' was corrupted.即栈区损坏。
    (2)
    char *strcpy(
    char *strDestination, //目标字符串。
    const char *strSource //null 终止的源字符串。
    );

    strcpy( )是char *类型,接受两个字符串指针参数, 返回的是第一个参数的值,即一个字符的地址。strcpy( )复制 strSource,包括终止 null 字符,按 strDestination指定的位置。 如果源页和目标字符串重叠,strcpy 行为不确定。由于 strcpy 不检查在 strDestination中是否有足够的空间,所以可能会产生缓冲区溢出的问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 专心搬砖的奥特曼 2014-11-23 08:41
    关注

    strcpy函数内部无法进行越界检查,它一个字符一个字符复制,直到遇到str1的'\0'结束符。

    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥18 如何用c++编写数学规律题
  • ¥20 使用uni-app发起网络请求,获取重定向302返回的cookie
  • ¥20 手机外部浏览器拉起微信小程序支付 (相关搜索:微信小程序)
  • ¥20 怎样通过一个网址找到其他同样模版的网址
  • ¥30 XIAO esp32c3 读取FDC2214的数据
  • ¥15 在工控机(Ubuntu系统)上外接USB蓝牙硬件进行蓝牙通信
  • ¥15 关于PROCEDURE和FUNCTION的问题
  • ¥100 webapi的部署(标签-服务器)
  • ¥20 怎么加快手机软件内部计时的时间(关键词-日期时间)
  • ¥15 C语言除0问题的检测方法