[英]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.