a954539881
a954539881
2017-12-07 05:46
采纳率: 0%
浏览 2.6k

C++ 用函数实现功能:字符串连接

#include
using namespace std;
char *my_strcat(char *str1,char *str2)
{
char *p = str1;
while( *p != '\0' ) {p++;}
*p = *str2;
do
{ str2++;
p++;

*p = *str2; 

} while( *str2 != '\0' );
return( str1 );
}
int main()
{char str1[6],str2[6];
cout<<"input str1"< cin>>str1;
cout<<"input str2"< cin>>str2;
cout<<my_strcat(str1,str2)<<endl;
}

请教下函数为什么能实现那个功能,返回值是str1?str2怎么连接到它后面了

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • a954539881
    a954539881 2017-12-07 06:09

    有人能帮忙看看嘛 好像简单的。。。。。

    点赞 评论
  • qq_38204686
    das白 2017-12-07 07:50

    关键就是那俩个循环
    建议单步调试
    带入值在纸上模拟一下也行
    并不难

    只是将str1 的结束位用str2覆盖 最后加个结束
    返回开始的地方str1

    点赞 评论
  • a954539881
    a954539881 2017-12-11 09:40

    str1没有改变啊?函数返回值返回str1怎么变成了两个字符串的内容了

    点赞 评论
  • qq_30145355
    _观众 2017-12-14 17:16

    #include
    using namespace std;
    char *my_strcat(char *str1, char *str2)
    {
    // str1="1234\0" str2="qwe\0"
    char *p = str1;
    while (*p != '\0') { p++; }// 使得p指向str1的'\0'的位置

    *p = *str2;// '\0'的值设置为str2字符串的第一个值

    do
    {
    str2++;
    p++;
    *p = *str2;//逐次往后赋值
    } while (*str2 != '\0');
    return(str1);//使用指针操作的是地址,这就是为什么返回了所得到的值!
    }
    int main()
    {
    char str1[6], str2[6];
    cout << "input str1" << endl;
    cin >> str1;
    cout << "input str2" << endl;
    cin >> str2;
    cout << my_strcat(str1, str2) << endl;

    return 0;
    

    }

    点赞 评论
  • vivien2004
    vivien2004 2018-04-25 09:46

    while( *p != '\0' ) {p++;}将指针移到str1的结尾,后面的代码将str2的值一个一个保存到str1字符串的后面。这个程序很危险,非法篡改了未知空间,不确定会引起什么崩溃。

    点赞 评论

相关推荐