找错
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




