读书人

为什么要加这句才能显示4545454123123

发布时间: 2012-04-09 13:41:24 作者: rapoo

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

C/C++ code
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;    }


[解决办法]
你这代码都编译不通过啊
p = (char *)(malloc(len1+len2)+1);

改成
p = (char *)(malloc(len1+len2+1));
[解决办法]
而且你i还没初始化
unsigned char i=0;
[解决办法]
p = (char *)(malloc(len1+len2)+1);//这句有点疏忽
应该是这样:
p = (char *)(malloc(len1+len2+1));

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

楼主说的问题应该与len1、len2是char类型有关
[解决办法]
我想知道为什么不释放内存???
[解决办法]
探讨
C/C++ code

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

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

retur……

[解决办法]
C/C++ code
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;    } 

读书人网 >C语言

热点推荐