一个strcat函数的实现,哪有错呢

pang123hui 2009-10-15 01:00:49

#include <stdio.h>


void catstr(char *dest,char *src);
void main ()

{
char *dest;
char *src="dfddd";

dest=(char *)malloc(80);

dest="abcd";

catstr(dest,src);

puts(dest);

}

void catstr(char *dest,char *src)
{
while(*dest)
dest++;

while(*dest++=*src++);
}


编译,连接都没有error,但就是运行不出结果,请高手指教?
...全文
106 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
pang123hui 2009-10-15
  • 打赏
  • 举报
回复
了解了,非常感谢
huqinglu123 2009-10-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 honghu069 的回复:]
用strcpy(dest,"abcd");取代dest="abcd";
dest="abcd"; 那么dest就指向了常量区,把刚申请的那块内存丢弃了
[/Quote]
对,就是楼上说的那样,也可以把dest定义成数组 char dest[80]="abcd";
phpjspasp 2009-10-15
  • 打赏
  • 举报
回复

char * strcat(char * dest, const char * src)
{
char *tmp = dest;

while (*dest)
dest++;
while ((*dest++ = *src++) != '\0')
;

return tmp;
}



linux的源码,看一下吧。
TianYiXiang 2009-10-15
  • 打赏
  • 举报
回复
dest="abcd";//dest指向了常量区,改成strcpy(dest,"abcd");
wanjingwei 2009-10-15
  • 打赏
  • 举报
回复
void catstr(char *dest,char *src);
void main ()

{
char dest[80]="abcd";
char *src="dfddd";


catstr(dest,src);

puts(dest);

}

void catstr(char *dest,char *src)
{
while(*dest)
dest++;

while(*dest++=*src++);
}
honghu069 2009-10-15
  • 打赏
  • 举报
回复
用strcpy(dest,"abcd");取代dest="abcd";
dest="abcd"; 那么dest就指向了常量区,把刚申请的那块内存丢弃了

69,369

社区成员

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

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