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;
} 展开
#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;
} 展开
1个回答
展开全部
#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;
}
追答
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编译器自动给你添加头文件了,换成其它编译器就不一定行了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询