一、函數strcat與stcncat的函數實現
1、strcat函數的實現
要求:
原型:char * strcat(char *dest, const char *src);
頭文件:#include <string.h>
功能:1、dest 為目的字符串指針,src 為源字符串指針。strcat() 會將參數 src 字符串復制到參數 dest 所指的字符串尾部;
2、dest 最后的結束字符 NULL 會被覆蓋掉,並在連接后的字符串的尾部再增加一個 NULL。
說明:
返回值:dest 字符串起始地址。
說明:
返回值:dest 字符串起始地址。
strcat代碼功能的實現
char* MyStrcat(char *dst, const char *src) { assert(dst != NULL && src != NULL); //assert函數的頭文件為#include <assert.h> char *temp = dst; while (*temp != '\0') temp++; while ((*temp++ = *src++) != '\0'); return dst; }
注意:1、dest 與 src 指針不能為NULL,並且所指的內存空間不能重疊,且 dest 要有足夠的空間來容納要復制的字符串。
2、assert是用來避免顯而易見的錯誤的,而不是處理異常的。錯誤和異常是不一樣的,錯誤是不應該出現的,異常是不可避免的。
2、strncat函數的實現
要求:
原型:char *strncat(char *dest, const char *src, size_t n);
頭文件:#include <string.h>
功能:把src所指字符串的前n個字符添加到dest結尾處,覆蓋dest結尾處的'/0',實現字符串連接。
說明:
返回值:dest 字符串起始地址。
返回值:dest 字符串起始地址。
strncat代碼功能的實現
char *strncat_m(char *dest,const char *str,int n) { assert((dest!=NULL)&&(str!=NULL)); char *cp=dest; //移動指針到末尾 while(*cp!='\0') ++cp; while(n&&(*cp++=*str++)!='\0') { --n; } return dest;
}
注意事項與strcat一致,不過要注意n的取值范圍