C/C++筆試考題之字符串連接函數strcat源碼實現
經過好幾次筆試經驗,總結一下曾經踩過的坑,常常被忽略的細節,總能在經歷過後銘記於心
字符串連接函數strcat( )
源碼實現:
#include <iostream>
#include <cassert>
using namespace std;
/*********************Linux平臺下的實現*********************/
char *My_strcat(char *dest,const char *src)
{
char *temp= dest;
while (*dest != '\0') //找到dest串的最後位置
{
dest++;
}
while((*dest++=*src++)!='\0') //將src串的元素一個一個放入串dest的尾部
{
}
return temp; //返回一個指向目的串的 chat *指針
}
/************************Windows平臺下的實現*******************/
char *Win_strcat(char *dest, const char * src)
{
char *temp = dest;
while (*temp) //找到dest串的最後位置
{
temp++;
}
while (*temp++ = *src++); //將src串的元素一個一個放入串dest的尾部
return dest; //返回目的串的 chat *指針
}
/*******************************Test**************************/
char* strcat1(char * dst, const char * src)
{
char * cp = dst;
while (*cp)
cp++;
while (*cp++ = *src++);
return(dst);
}
int main()
{
char str1[20] = "abcdefg";
char str2[10] = "hijk";
char str3[30];
memset(str3, NULL, sizeof(char) * 30);
My_strcat(str1, str2);
cout<<str1;
cout << endl;
Win_strcat(str3, str2);
cout << str3;
system("pause");
return 0;
}
運行結果: