2 qq 33486292 qq_33486292 于 2016.03.17 21:35 提问

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
LamJoker   2016.03.18 14: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;//为了实现链式操作,将目的地址返回

}

gameuu
gameuu   2016.03.17 21:46

比较完了,指针地址变动了吧

qq423399099
qq423399099   Ds   Rxr 2016.03.17 21:56

str_cat不能返回void,要改成

 char *str_cat(char*p1,char*p2)
qq_33486292
qq_33486292 题目要求这样,是题目搞错了吗?
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!