请问我想做一个字符串的连接程序,请看问题在哪里?

wanzhongyi 2003-08-22 09:03:23

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

char *target="/root/wan/syscalls";
const char *source="/server3";

char *original=target;
while(*target) target++;
while(*target++=*source++);
printf("%s\n",original);

exit(0);
}
总报错,不知道为什么,请指教,谢谢!
...全文
44 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanzhongyi 2003-08-22
  • 打赏
  • 举报
回复
谢谢,如果我只用c语言写,不能用new来操作了,就的用malloc了吧?给分了。
EmailTan 2003-08-22
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>

char * strcat(char *sDes,const char *sSrc)
{
for(int tLen=0;sDes[tLen];tLen++);

for(int sLen=0;sSrc[sLen];sLen++);

int nSum = tLen + sLen + 1;
char *original=(char *)malloc(nSum);

for(int i=0;i<tLen;i++)
original[i] = sDes[i];

for(i=0;i<sLen;i++)
original[tLen+i] = sSrc[i];

original[nSum-1]='\0';

return original;
}

int main()
{

char *target="/root/wan/syscalls";
const char *source="/server3";


printf("%s\n",strcat(target,source));

return 0;
}

输出:/root/wan/syscalls/server3
sevecol 2003-08-22
  • 打赏
  • 举报
回复
char *target="/root/wan/syscalls";
const char *source="/server3";

char *newchar=new char[strlen(target)+strlen(source)+1];

char *temp=newchar;

strcpy(temp,target);
strcpy(temp+strlen(target),source);

newchar就是你需要的字符串
wanzhongyi 2003-08-22
  • 打赏
  • 举报
回复
谢谢,能否给个示例,谢谢
sevecol 2003-08-22
  • 打赏
  • 举报
回复
char *target="/root/wan/syscalls";
const char *source="/server3";

"/root/wan/syscalls"所在的内存区域是只读的。

正确的做法是,分配一个两字符串长度和+1的空间,分别将两字符串拷贝连接。

69,368

社区成员

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

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