程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> c++新手-C++簡單題目,有懸賞!

c++新手-C++簡單題目,有懸賞!

編輯:編程解疑
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有介紹這幾個函數的知識點嗎?在多少頁?

最佳回答:


參考一下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;//為了實現鏈式操作,將目的地址返回

}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved