簡體   English   中英

如何創建自己的 strcpy function?

[英]How to create your own strcpy function?

我嘗試創建自己的 strcpy function 但是當我想在我的主 function 中測試它時它無法工作。它告訴我存在分段錯誤。

#include <stdio.h>

char *ft_strcpy(char *dest, char *src)
{
    int char_counter = 0;
    
    while (src[char_counter] != '\0')
    {
        dest[char_counter] = src[char_counter];
        char_counter++;
    }
    dest[char_counter] = '\0';
    return (dest);
}

int main()
{
    char *x;
    char *y;
    char f[5];
    char u[5] = "Hello";

    x = f;
    y = u;
    ft_strcpy(x, y);
    for (int i = 0; i < 5; i++)
    {
        printf("%c", x[i]);
    }
    
    return (0);
} 

問題:

由於您已將字符數組u的大小定義為5 ,如果鍵入的字符超過五個,則多余的字符和 null 終止符將寫入數組末尾之外,覆蓋不屬於數組的 memory 。 這是緩沖區溢出。

結果你會得到Undefined behavior

解決方案:

要從您的代碼中獲取正確的 output,請按如下方式定義u

char u[6] = "Hello";    // need space to keep  null terminator at the end of the character array

或者

char u[] = "Hello"; 

注意:目標數組f也必須至少和u一樣大

請查看以下資源以了解更多信息:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM