CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

找错

楼主ling3(菜鸟学习中)2006-02-06 18:58:27 在 C/C++ / C语言 提问

test()  
  {    
                char   str[10];  
                char   *   str1   =   "0123456789";  
                strcpy(str,   str1);  
  }错在那里?  
  问题点数:10、回复次数:6Top

1 楼bm1408(向va_list学习~不用VC好多年~)回复于 2006-02-06 19:13:23 得分 2

strncpy(str,str1,10);Top

2 楼iamcaicainiao(老菜,长征)回复于 2006-02-06 19:21:34 得分 2

#include<string.h>Top

3 楼iamcaicainiao(老菜,长征)回复于 2006-02-06 19:23:16 得分 2

test最好再有个返回值,或者定义成void型Top

4 楼ninaibei(wokao)回复于 2006-02-06 19:40:33 得分 2

看来楼上的兄弟还没有说出问题的要害,  
  错在拷贝溢出,  
    char   *   str1   =   "0123456789";//这个指针指向的常量字符串实际占有11个字符,注意后面有一个结束符'\0',  
  strcpy(str,   str1);//这样就把这11个字符拷给str后,数组str只有10个字节,就溢出了,数组后面那个字节也被无辜的改变成了'\0'.DO   YOU   UNDERSTAND???Top

5 楼fjm_520(蓝)回复于 2006-02-07 09:18:56 得分 2

益出问题,楼上正解。其实在c中编译时是不会出错的,有时在运行时也能通过,这就是由于c太灵活的缘故,所以有很多人在批评它了。像这种益出控制更多需要编程人员自己来控制,如果太依赖软件本身的规则,那就会出现很多问题了。Top

6 楼iamcaicainiao(老菜,长征)回复于 2006-02-07 23:02:34 得分 0

to   ninaibei(wokao)  
  你说得太对了。呵呵。感谢。Top

相关问题

  • 找错
  • 找错
  • 找错。
  • 找错
  • 找错。。。
  • 找错。
  • 找错。
  • 找错
  • 找错误啦~
  • 找找错

关键词

  • str
  • 问题
  • char

得分解答快速导航

  • 帖主:ling3
  • bm1408
  • iamcaicainiao
  • iamcaicainiao
  • ninaibei
  • fjm_520

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo