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

C 語言面試必考:標準庫級 strcpy 實現與鏈式調用設計

     編輯:關於C語言

最佳實踐版本

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

char *my_strcpy(char *dst, const char *src) {
    assert(dst != NULL && src != NULL); // 斷言非空
    char *ret = dst;                    // 保存目標起始地址
    while ((*dst++ = *src++) != '\0');  // 拷貝含結束符
    return ret;                         // 返回 dst 支援鏈式調用
}

int main() {
    char *src = "bit-tech";
    char dst[20];
    printf("長度: %zu\n", strlen(my_strcpy(dst, src))); // 鏈式調用 strlen
    return 0;
}

設計亮點

  1. const char *src:明確輸入參數不可修改。
  2. assert:防禦性編程,捕獲空指針。
  3. 返回 dst:允許 strlen(strcpy(dst, src)) 等鏈式表達。
  4. 拷貝循環包含 '\0',保證目標字符串正確結束。

同理可寫 strlen

size_t my_strlen(const char *s) {
    assert(s);
    const char *p = s;
    while (*p) p++;
    return p - s;
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved