当前位置: 代码迷 >> C语言 >> 前辈们请留步 (任意长度)字符串连接怎么实现
  详细解决方案

前辈们请留步 (任意长度)字符串连接怎么实现

热度:218   发布时间:2008-05-29 16:00:55.0
楼上的兄弟,你的s要是正好指在一片空白的内存的开始,还可以;但是它要是指在了存有数据的内存段的开始,那就麻烦了.

c语言的动态分配内存可不是鸡肋阿!
----------------解决方案--------------------------------------------------------
回复 10# shengyi912 的帖子
谢谢了......                 while循环条件是不是应该为*s!=0和*string!=0a啊......
----------------解决方案--------------------------------------------------------
回复 11# mqh21364 的帖子
那在为变量分配内存空间时,是不是从空白的内存开始的呢......
----------------解决方案--------------------------------------------------------
回复 7# sjzfmyxc 的帖子
是吗?
strcpy(s2+strlen(s2),s1);
----------------解决方案--------------------------------------------------------
回复 13# sjzfmyxc 的帖子
为变量分配内存的时候当然是空白的了,但是你不能保证在其后面的n个空间都是空白的阿.

而且,你那样写除了tc,别的编译器都不支持.
----------------解决方案--------------------------------------------------------
回复 14# StarWing83 的帖子
什么意思?
----------------解决方案--------------------------------------------------------
回复 15# mqh21364 的帖子
TC也不支持啊
----------------解决方案--------------------------------------------------------
VC 下编译通过
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void main()
{

    char *s=(char *)malloc(30*sizeof(char));
    char *h="dadadf";
    char *d = "dadadada";
      
    *s = 0;
    printf("%s\n",s);
    strcat(s,h);
    printf("%s\n",s);
    strcpy(s+strlen(s),d); // 法一:使用strcpy
    printf("%s\n",s);
    strcat(s,d);          // 法二:使用strcat
    printf("%s\n",s);

}
----------------解决方案--------------------------------------------------------
  相关解决方案