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

C語言手寫 strcpy 字串複製函式:指標版實作與鏈式呼叫

     編輯:關於C語言

標準 strcpy 行為

  • 將 src 指向的字串(含結尾 \0)複製到 dest。
  • 回傳 dest 原始值,支援鏈式呼叫:strlen(strcpy(buf, "abc"))。

完整實作

#include 
#include 
#include 

char* my_strcpy(char *dest, const char *src) {
    char *ret = dest;                 // 保存起始位址以便回傳
    assert(src != NULL);
    assert(dest != NULL);
    while (*dest++ = *src++) {        // 複製字元並檢測 '\0'
        ;                             // 空敘述
    }
    return ret;
}

int main() {
    char *p = "bit-tech";
    char arr[20];
    char *ret1 = my_strcpy(arr, p);
    printf("%s\n", ret1);             // 輸出 bit-tech
    return 0;
}

關鍵細節解析

  1. const char *src:承諾不修改來源字串。
  2. assert:防禦性程式設計,捕捉空指標。
  3. while (*dest++ = *src++):
    ① 取 *src 值賦給 *dest。
    ② 兩指標各自後移。
    ③ 以賦值結果(字元值)作為條件,遇 \0(值 0)為假,迴圈結束,\0 已被複製到 dest。
    ④ 整條敘述無需大括號,慣用 ; 空敘述。
  4. 回傳 ret 而非 dest,因 dest 已指向結尾。

常見錯誤

  • 忘記複製 \0 導致目的字串非法。
  • 未檢查空間大小,造成緩衝區溢位(標準庫 strcpy 同樣有此問題,實務建議用 strncpy 或 strcpy_s)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved