QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 970|回复: 4

奇怪了,这段代码为何会正常执行完成了后报段错误...

[复制链接]
发表于 2005-5-18 14:49:52 | 显示全部楼层 |阅读模式
[code:1]#include <stdio.h>
#include <string.h>
main(int argc,char* Hello[])


{
char cha[]="hello world!";
char chb[20];
int i;
if( argc>4)
{
printf("\n main %d %s \n",argc,*(Hello+3));
}
else
{
printf("less argc\n");
}
for (i=0;i<argc;i++)
/*{*/
{
strcpy(chb,*(Hello+i));strcat(cha,chb);printf("%s\n" ,chb);printf("%s\n" ,cha);
}
/* chb[]=*(Hello+i);
strcpy(chb,*(Hello+i));
printf("%s\n" ,chb);
strcat(cha,chb);
printf("%s\n" ,cha);
}*/
i=0;
printf("this arg=%s\n",cha);

}
[/code:1]
 楼主| 发表于 2005-5-18 15:33:21 | 显示全部楼层
感谢....把cha扩大到50就正确了..
回复

使用道具 举报

 楼主| 发表于 2005-5-18 16:35:15 | 显示全部楼层
haha,有了你的提示肯定会用strlen来检测字串长度来避免...好久没用C了,好多东东都忘光了.以后还要多向你们请教..
回复

使用道具 举报

发表于 2005-6-3 17:36:57 | 显示全部楼层
复制字符串的时候最好用strncpy或snprintf之类可以控制长度的函数,象strcpy这样的函数就是比较危险的函数,很容易溢出的
回复

使用道具 举报

发表于 2005-6-8 18:27:09 | 显示全部楼层
你没有设好边界条件!这一你一定要在每次用像:int num[89];.....num=a;要对i设个边界条件你可以i=0;IF(i<89){num=a;i++;}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-5 21:54 , Processed in 0.040970 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表