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有介紹這幾個函數的知識點嗎?在多少頁?
參考一下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;//為了實現鏈式操作,將目的地址返回
}