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

C語言遞迴/迭代實作字串複製 strcpy:指針遞增與結束符處理

     編輯:關於C

標準 strcpy 語義

複製 src (含 \0) 到 dest,回傳 dest。呼叫者保證 dest 空間足夠。

手寫實作三版本

1. 指針迭代 (經典 K&R 風格)

char *my_strcpy(char *dest, const char *src) {
    char *ret = dest;
    while ((*dest++ = *src++)) ; // 賦值結果作為條件,\0 為 0 結束
    return ret;
}

2. 陣列索引版 (易讀)

char *my_strcpy2(char *dest, const char *src) {
    int i = 0;
    while (src[i]) { dest[i] = src[i]; i++; }
    dest[i] = '\0';
    return dest;
}

3. 遞迴版 (教學)

char *my_strcpy_rec(char *dest, const char *src) {
    if (*src == '\0') { *dest = '\0'; return dest; }
    *dest = *src;
    return my_strcpy_rec(dest+1, src+1);
}

關鍵點

  • 必須複製 \0,否則 dest 非合法字串。
  • 重疊記憶體行為未定義 (用 memmove)。
  • 無長度檢查,**極易緩衝區溢位**,現代代碼禁用,改用 strncpy/snprintf/strlcpy。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved