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 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退