abc罗大侠 2016-03-17 13:35 采纳率: 86.4%
浏览 1483
已采纳

C++简单题目,有悬赏!

c++ 写出了strcat和strlen函数,再输出拼接的字符串和其长度
cout<<strcat(p1,p2)<<strlen(strcat(p1,p2));错在哪里?

我编了一个strcat函数和strlen函数,大概是这样void str_cat(char*p1,char*p2)和int str_len(char*p),一个显示void不能用cout输出,一个是int类型不能变为char类型。
还有一个str_cmp(char*p1,*p2)函数怎么输出其结果。
就是void str_cat(char*p1,char*p2);
int str_len(char*p)
int str_cmp(char*p1,*p2)
int main()
{
cout<<str_cmp(p1,p2);
cout<<strcat(p1,p2)<<strlen(strcat(p1,p2));
}这些输出哪里出错了,谢谢!另外C++ primer plus有介绍这几个函数的知识点吗?在多少页?

  • 写回答

3条回答

  • LamJoker 2016-03-18 06:21
    关注

    参考一下strcat的源代码,希望对你有帮助
    char* strcat(char* strDest , const char* strSrc)
    {
    //后文return address,故不能放在assert断言之后声明address
    char* address=strDest;
    assert( (strDest!=NULL)&&(strSrc!=NULL) );//对源地址和目的地址加非0断言
    while(*strDest)//是while(*strDest!=’\0’)的简化形式
    {
    //若使用while(*strDest++),则会出错,因为循环结束后strDest还会执行一次++,
    //那么strDest将指向'\0'的下一个位置。/所以要在循环体内++;因为要使*strDest最后指
    //向该字符串的结束标志’\0’。
    strDest++;
    }

    while(*strDest++=*strSrc++)
    {
        NULL;//该循环条件内可以用++,
    }//此处可以加语句*strDest=’\0’;无必要
    return address;//为了实现链式操作,将目的地址返回
    

    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog