題目要求
(我們不妨先模擬實現一下strcat函數,然后再對照一下string.h庫函數中strcat函數代碼的實現,與大師肩並肩.)
算法分析
strcat函數功能:將兩個字符串連接起來,最終返回連接后字符串的首地址.
strcat函數原型:char *strcat(char *dest,const char *src);
我們清楚地了解了strcat函數功能和原型之后,就很容易分析出算法...
算法總結
第一步:將dest指向的內容循環遍歷至'\0'的部分.
第二步:將src指向的內容循環拷貝給dest,包括src后面的'\0'.
核心代碼
//模擬實現strcat函數
char *my_strcat1(char *dest,const char *src){
char * ret = dest;
//對接受到的兩個指針進行斷言
assert(dest);
assert(src);
//將dest遍歷至\0
while(*dest){
dest++;
}
//將src內容復制在dest之后
while(*src){
*dest++ = *src++;
}
//在dest后面追加\0
*dest = '\0';
return ret;
}
完整測試代碼
/*
*本代碼由高小調原創,版權歸高小調博客所有
*作者:高小調
*日期:2016-8-7
*代碼功能:模擬實現strcat函數
*集成開發環境:Microsoft Visual Studio 2010
*/
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
//模擬實現strcat
char *my_strcat1(char *dest,const char *src){
char * ret = dest;
//對接受到的兩個指針進行斷言
assert(dest);
assert(src);
//將dest遍歷至\0
while(*dest){
dest++;
}
//將src內容復制在dest之后
while(*src){
*dest++ = *src++;
}
//在dest后面追加\0
*dest = '\0';
return ret;
}
//庫函數中實現方法
char *my_strcat2(char *dest,const char *src){
char * cp = dest;
//將dest遍歷至\0
while(*cp){
cp++;
}
//將src內容復制在dest之后
while(*cp++=*src++){
;
}
return dest;
}
int main(){
char str1[20] = "Hello ";
char str2[] ="Gxd Blog!";
char *ret = my_strcat1(str1,str2);
printf("%s\n",ret);
system("pause");
return 0;
}
輸出

小調祝你一切安好.
本文由高小調博客原創!
原文地址:http://gaoxiaodiao.com/p/21.html
如欲轉載,請注明出處!
PS:我在大二上學期,為了賺取瑜伽教練進修費用,周末在KFC兼職打工時,生活節奏超快.
下午2半點從學校走,3點半上班,一直到晚上12點.學校關門了,坐個出租車,去網吧包夜.
(KFC可以報銷部分車費.)
當時我心想如果大學畢業以后,每天都是這樣生活的話,這未來也太黑暗了吧!
在那段時間內,我一直認為,這應該就是大學中最黑暗的時光了吧!
再回顧下現在,每天早上6點起床去瑜伽館.
下午5點下課后,火速趕往公交車站,因為6點還有編程課,晚上9點下課...
盡管現在比之前的兼職辛苦更多,但我很享受...
這就是也許傳說中的成長吧!
