读书人

自己写的strcat()函数 结果不对 求大牛

发布时间: 2012-02-27 10:00:22 作者: rapoo

自己写的strcat()函数 结果不对 求大牛
目标:自己写strcat()函数

问题:每次输出结果都是第一个字符串的字符 而不是连接后的字符

代码如下

C/C++ code
#include<iostream>using namespace std;//\\\\\\\\主调函数\\\\\\\\\\\\\\\\\\\\\\\\\\\int main(){    char *str(char *,char *);    char str1[20],str2[20];    cout<<"请输入2个字符串,程序会将他们连接:";     cin>>str1;    cout<<"请输入第二个字符串:";    cin>>str2;    cout<<"连接完成:"<<str(str1,str2);    putchar('\n');    system("pause");    return 0;}        //\\\\\\\\\\\\\\\\连接两个字符串\\\\\\\\\\\\\\\char *str(char *str1,char *str2){    int strlen(char *);    int len,conlen,i;    len=strlen(str1);    conlen=strlen(str2);    if(conlen>20-len)    {        cout<<"字符串超长"<<endl;        return 0;     }    else     {        for(i=0;i<=conlen;i++)            str1[len+i]=str2[i];        return str1;    }} //\\\\\\\\\\\\\测量字符串实际长度(自己写的)\\\\\\\\\\\\\\\\\\\\\\int strlen(char *str){    int i;    char a;    for(i=0;str[i]!='\0';i++);    return i+1;}



东看西看也没看出来哪里错了

我知道这样算法上绕弯子了 但是这样为什么结果不对?

小弟自学+笨蛋一个 望高人指点

[解决办法]
你把那个+1去掉就好了。 因为多算了1,导致复制了str1的'\0'
所以最后打印结果就只显示str1了,因为字符串打印遇'\0'就停止

读书人网 >C++

热点推荐