C++自己编写一个具有strcat函数功能的函数 将两个字符串连接起来 结果取代第一个字符串 帮忙看下哪里错了

#include<iostream>#include<string>usingnamespacestd;voidmy_strcat(chars1[],chars2[]){... #include<iostream>
#include<string>
using namespace std;
void my_strcat(char s1[], char s2[])
{
int m, n,i;
m = strlen(s1);
n = strlen(s2);
for (i = 0; i <= n - 1; i++)
{
s1[m + i] = s2[i];
}
s1[m + n] = '\0';
}
int main()
{
char s1[100] = { 'a',' b',' c',' d',' e' }, s2[] = { 'k',' j','g','f' };
my_strcat(s1, s2);
cout << s1 << endl;
system("pause");
return 0;
}
展开
 我来答
wanglixin1001
推荐于2016-11-06 · TA获得超过4174个赞
知道大有可为答主
回答量:1758
采纳率:80%
帮助的人:877万
展开全部
#include<iostream>
#include <cstring> // strlen在这个头文件里
using namespace std;
void my_strcat(char s1[], char s2[])
{
int m, n,i;
m = strlen(s1);
n = strlen(s2);
for (i = 0; i <= n - 1; i++)
{
s1[m + i] = s2[i];
}
s1[m + n] = '\0';
}
int main()
{
char s1[100] = { 'a','b','c','d','e', '\0' }, s2[] = { 'k','j','g','f','\0' }; /* 这么定义字符串,strlen遇到\0结束,且不能有' a'这样的字符,空格和a是两个字符。*/
my_strcat(s1, s2);
cout << s1 << endl;
return 0;
}
追问

头文件string 就可以了啊   而且定义字符串的时候不用加空字符 系统自动回加的啊 

我把定义字符串时候的空格去掉 后的运行结果

追答
1. 您的运行结果也不对啊。正确结果应该是abcdekjgf才对。
2. char s1[100] = { 'a','b','c','d','e'}这样初始化不会自动添加\0,需要char s1[100] = {"abcde"}这样才对自动添加。
3. strlen在头文件:string.h中,换成c++的写法就是。是c++的string类的头文件。
4. 你不加而用能够成功是因为你的vc编译器自动给你添加头文件了,换成其它编译器就不一定行了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式