为什么要加这句才能显示454545412312312312313225,否则无显示

Start13 2012-04-01 11:32:41
int main(int argc, char *argv[])
{
char *p;

p = Strcat("454545","412312312312313225");
printf("%s",p);

return 0;
}


char *Strcat(char *str1, char *str2)
{
char *p,len1,len2;
unsigned char i;


len1 = strlen(str1);
len2 = strlen(str2);

//printf("%d %d\n",len1,len2); //为什么要加这句才能显示454545412312312312313225,否则无显示

p = (char *)(malloc(len1+len2)+1);

while(*str1 != '\0')
{

p[i++] = *str1++;
}
while(*str2 != '\0')
{
p[i++] = *str2++;
}

p[i] = '\0';

return p;

}
...全文
102 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
x332363930 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
C/C++ code

int main(int argc, char *argv[])
{
char *p;

p = Strcat("454545","412312312312313225");
printf("%s",p);
free(p); //放这这儿 ?

retur……
[/Quote]必须的
Start13 2012-04-01
  • 打赏
  • 举报
回复
int main(int argc, char *argv[])
{
char *p;

p = Strcat("454545","412312312312313225");
printf("%s",p);
free(p); //放这这儿 ?

return 0;
}

Start13 2012-04-01
  • 打赏
  • 举报
回复
1. 4楼的正解
2. 问题 free 应该放在哪儿啊 ?
应该是下面的吗 ?
int main(int argc, char *argv[])
{
char *p;

p = Strcat("454545","412312312312313225");
printf("%s",p);

return 0;
}


imlt1234 2012-04-01
  • 打赏
  • 举报
回复
我想知道为什么不释放内存???
imlt1234 2012-04-01
  • 打赏
  • 举报
回复
编译过后为什么会有警告???
面包大师 2012-04-01
  • 打赏
  • 举报
回复
 //最主要还是这句有问题
p = (char *)(malloc(len1+len2+2));//多分配点也无妨
JieTouLangRen 2012-04-01
  • 打赏
  • 举报
回复
p = (char *)(malloc(len1+len2)+1);//这句有点疏忽
应该是这样:
p = (char *)(malloc(len1+len2+1));

为什么len1,len2,i这些要声明为char类型?求指教
俺一般会声明为int型

楼主说的问题应该与len1、len2是char类型有关
shn521 2012-04-01
  • 打赏
  • 举报
回复
而且你i还没初始化
unsigned char i=0;
shn521 2012-04-01
  • 打赏
  • 举报
回复
你这代码都编译不通过啊
p = (char *)(malloc(len1+len2)+1);

改成
p = (char *)(malloc(len1+len2+1));
hu7324829 2012-04-01
  • 打赏
  • 举报
回复
printf("%s",p);改成printf("%s\n",p);试试
nice_cxf 2012-04-01
  • 打赏
  • 举报
回复
printf要加\n才能马上显示,
printf("%s",p);
改成
printf("%s\n",p);
Dany 2012-04-01
  • 打赏
  • 举报
回复
代码存在bug。
malloc位置不对。
今儿起叫民工 2012-04-01
  • 打赏
  • 举报
回复
进来看看!
Start13 2012-04-01
  • 打赏
  • 举报
回复
结贴
没有初始化,后果很严重啊!!!
  • 打赏
  • 举报
回复

int main(int argc, char *argv[])
{
char *p;

p = Strcat("454545","412312312312313225");
printf("%s",p);
free(p);
return 0;
}


char *Strcat(char *str1, char *str2)
{
char *p;
size_t len1,len2;
int i=0;


len1 = strlen(str1);
len2 = strlen(str2);

//printf("%d %d\n",len1,len2); //为什么要加这句才能显示454545412312312312313225,否则无显示

p = (char *)malloc(len1+len2+1);

while(*str1 != '\0')
{

p[i++] = *str1++;
}
while(*str2 != '\0')
{
p[i++] = *str2++;
}

p[i] = '\0';

return p;

}

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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