三个关于字符串拷贝函数的找错题

zhouhong0801 2007-10-24 11:28:52

Void test1()
{
char string[10];
char* str1="0123456789";
strcpy(string, str1);
}

Void test2()
{
char string[10], str1[10];
for(I=0; I<10;I++)
{
str1[i] ='a';
}
strcpy(string, str1);
}

Void test3(char* str1)
{
char string[10];
if(strlen(str1)<=10)
{
strcpy(string, str1);
}
}


上面每个函数都有错误,请找出他们的错误。
...全文
91 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
tt0444 2007-10-24
  • 打赏
  • 举报
回复
strcpy函数以查找src的'\0'来作为SrcString的结束依据.
所以1&2拷贝的行为是未知的,3会导致数组越界
w5325698 2007-10-24
  • 打赏
  • 举报
回复
你忘拉在数组开辟是为拷贝的字符串加个\0拉
远去的太阳 2007-10-24
  • 打赏
  • 举报
回复
第二个的I好像类型没被声明吧
zhouhong0801 2007-10-24
  • 打赏
  • 举报
回复
我自己也觉得是,但是害怕还有别的错误没有发现。所以想让大家都来看看,说不定会找出一些别的错误
Aaron_Jerry 2007-10-24
  • 打赏
  • 举报
回复
text1: string无法存放结束符'\0'。
text2: str1不是字符串,只是个字符数组,strcpy要求源必须是以'\0'结束的字符串。
text3: strlen(str1)==10时,同样存在和第一个函数一样的问题。
xory001 2007-10-24
  • 打赏
  • 举报
回复
都是长度不够.char a[10],只能放几个字符,最后一个是0,不然会出错.
yyy6210 2007-10-24
  • 打赏
  • 举报
回复
test1 长度不够,内存地址溢出了应该

test2 好像同样的问题,strcpy函数把str1这个当作字符串来处理

test3感觉还是同样的问题。。


新手,理解的也可能不对哈~~~~
zhouhong0801 2007-10-24
  • 打赏
  • 举报
回复
没人回答,自己先顶一下

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧