[英]C pointers: copy strings
我正在嘗試復制包含在其中的字符串
char *src
進入
char *dst
這是我的功能,但無法編譯
char *mystrncpy(char *dst, char *src, size_t len)
{
char *temp = dst;
char *p = dst;
size_t i = 0;
for (p = dst; i < len; p += 1)
{
*p = *(src + p);
i += 1;
}
return *temp;
}
你太過分了。
您可能想要這樣:
char *mystrncpy(char *dst, char *src, size_t len)
{
while (len > 0)
{
*dst++ = *src++;
len--;
}
return dst - len;
}
這是完全錯誤的
return *temp;
*temp
是一個char
而不是一個指針,因此return temp;
是正確的。
順便說一句:嚴格來說,我們不復制字符串,因為C中的字符串是NUL終止的char序列。 在這里,我們只是復制len
個字節。
你真的很親密; 您的錯誤在此行上:
*p = *(src + p);
考慮一下為什么要取消引用*(src + p)
... ...請記住,您要復制的字符的存儲位置在哪里?
同樣,您的函數應該返回void
因為在任何地方都沒有return
語句,或者返回dst
。 另外,您的循環防護中不需要p < src
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.