首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言指標版 strcpy 實作:斷言防禦與鏈式回傳

     編輯:關於C語言

完整程式碼

#include 
#include 

char *my_strcpy(char *dest, const char *src) {
    char *ret = dest;
    assert(dest != NULL);
    assert(src != NULL);
    while (*dest++ = *src++) {
        ;   // 空敘述
    }
    return ret;
}

int main() {
    char *p = "Hello world!";
    char arr[20];
    char *ret = my_strcpy(arr, p);
    printf("%s", ret);
    return 0;
}

逐行解析

  1. char *ret = dest; 保存起始位址,因 dest 會在迴圈中遞增。
  2. assert:針對空指標提前失效,避免未定義行為。
  3. while (*dest++ = *src++):
    ‑ 取 *src 值賦給 *dest
    ‑ 兩指標後移
    ‑ 以賦值結果為條件,遇 \0 (0) 停止,且 \0 已複製
  4. 回傳 ret 支援 printf("%s", my_strcpy(buf, src)) 等鏈式用法。

安全性提醒

  • 呼叫端必須確保 dest 空間 ≥ strlen(src)+1。
  • 生產環境建議使用 strncpy、strcpy_s 或 strlcpy 限制長度。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved