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

C 語言指針實現 strcpy:鏈式拷貝、斷言防禦、返回值設計

     編輯:關於C

標準庫 strcpy 行為

  • 將 src 指向的字符串(含 \0)拷貝到 dest;
  • 返回 dest 原始值,支持鏈式調用;
  • 行為未定義:dest 空間不足、重疊、空指針。

手寫實現

#include <stdio.h>
#include <assert.h>

char *my_strcpy(char *dest, const char *src) {
    assert(dest && src);          // 防禦性編程
    char *ret = dest;             // 保存返回值
    while ((*dest++ = *src++)) ;  // 拷貝含 \0,遇 \0 為 0 結束
    return ret;
}

int main() {
    char *src = "Hello world!";
    char dest[20];
    printf("%s\n", my_strcpy(dest, src)); // 鏈式調用直接打印
    return 0;
}

關鍵細節

  • const char *src 承諾不修改源串;
  • while (*dest++ = *src++) 經典寫法:賦值表達式值為賦值結果,\0 為 0 假結束循環;
  • 返回 ret 而非 dest(已移至末尾);
  • 生產代碼應用 strncpy 或檢查目標緩衝區大小。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved