面試 準備之 字串: Append

來源:互聯網
上載者:User

我們知道,面試中經常出現對字串的操作,看起來簡單的函數實現,其實做起來還是有點難度的,加之,是在比較緊張的氛圍下。一行漂亮的代碼可以讓面試官眼睛一亮。

 先來看看Append函數吧!

先上寫好的代碼吧(給予VS2008開發的)

char* CharAppend( char* sourceChar1,char *sourceChar2)//分別傳入要拼接的兩個字串,
{
int i=0;
int j=0;
char* DesChar=new char();//開闢一個新的地區,存放拼接後的字串
while((DesChar[i]=sourceChar1[i])!='\0')//先拼接第一個
{
i++;
}
   j=i;
   while((DesChar[j]=sourceChar2[j-i])!='\0')//再拼接第二個
   {
   j++;
   }
   return DesChar;
  
}

測試:

放入main函數試試:

#include"iostream"
using namespace std;

 char* CharAppend(char*,char*);
int main()
{
char* originalChar="abc";
//originalChar="abc";
char*secondChar="efg";
char* AppendedChar= CharAppend(originalChar,secondChar);

return 0;

}

OK 結果成功!!!

但是發現一個問題:子函數內部:new了一個變數,卻沒有delete,會造成記憶體泄露,對於面試官來說,此乃大忌!!但是在子函數外面delete會引起編譯錯誤!!

改程式如下:可以傳入char*,用於存放拼接後的字串。

#include"iostream"
using namespace std;

void CharAppend(char*,char*,char*);
int main()
{
char* originalChar="abc";
//originalChar="abc";
char*secondChar="efg";
char* DesStr=new char();
CharAppend(DesStr,originalChar,secondChar);

cout<<DesStr;

return 0;

}
void CharAppend(char* DesStr, char* sourceChar1,char *sourceChar2)
{int i=0;
int j=0;
while((DesStr[i]=sourceChar1[i])!='\0')
{
i++;
}
   while((DesStr[i]=sourceChar2[j])!='\0')
   {
    i++;
j++;
   }
}

此程式就能正確輸出了。

咋們再來看看網上關於StrCat代碼。注意的是:因為是面試題,所以盡量不要去調用c的庫函數,一般題目也會這麼要求,要不就沒意義了。

一下的參考代碼來自部落格:http://blog.csdn.net/yexianyi/article/details/4092945,引用請註明出處。

Char* strcat ( char * dst , const char * src )

{

char * cp = dst;

while( *cp )

cp++; /* find end of dst */

while( *cp++ = *src++ ) ; /* Copy src to end of dst */

return( dst ); /* return dst */

}

但是 ,我有一個疑問:作者直接在dst後加入src,但是怎麼可以確定dst後還有空間呢???萬一沒有呢,是不是有個安全隱患????回去問問大牛師兄吧。還有就是src沒控制大小。廢話別說,運行一下就知道。

還有個細節,記得加const.....錯誤的原因 在下一篇中分析、、、

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.