問題:自己實現一個strcat_s函數,要和C語言庫函數的strcat函數完成同樣的功能。
(1) 函數原型 char *strcat(char *dest, const char *src);
(2) 函數說明 dest 為目的字符串指針,src 為源字符串指針。strcat() 會將參數 src 字符串復制到參數 dest 所指的字符串尾部;dest 最后的結束字符 NULL 會被覆蓋掉,並在連接后的字符串的尾部再增加一個 NULL。
注意:dest 與 src 所指的內存空間不能重疊,且 dest 要有足夠的空間來容納要復制的字符串。
(3) 返回值 返回dest 字符串起始地址。
C++實現代碼:
#include <stdio.h> #include <assert.h>
char* strcat_s(char* dest, const char* src) { assert(dest != NULL && src != NULL); char* temp = dest; while (*temp != '\0') temp++; while ((*temp++ = *src++) != '\0'); return dest; } int main() { char src[10] = "world"; char dest[100] = "hello "; char* str3 = strcat_s(dest, src); printf("src = %s\n", src); printf("dest = %s\n", dest); printf("str3 = %s\n", str3); return 0; }
問題2:strcat能把strSrc 的內容連接到strDest,為什么還要char * 類型的返回值?
答:方便賦值