簡體   English   中英

C指針:復制字符串

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

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