自己写的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'就停止