C指针:复制字符串
我正在尝试复制中包含的字符串C指针:复制字符串,c,string,pointers,C,String,Pointers,我正在尝试复制中包含的字符串 char *src 进入 这是我的函数,但不编译 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; }
char *src
进入
这是我的函数,但不编译
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;
}
你真的很接近;您的错误在这一行:
*p = *(src + p);
想想你为什么要取消引用*src+p。。。记住,要复制的角色的内存位置在哪里
此外,函数应该返回void,因为任何地方都没有return语句,或者返回dst。同样,你不需要在你的循环保护中使用p
*p = *(src + p);
想想你为什么要取消引用*src+p。。。记住,要复制的角色的内存位置在哪里
此外,函数应该返回void,因为任何地方都没有return语句,或者返回dst。此外,在循环保护中不需要pchar *mystrncpy(char *dst, char *src, size_t len)
{
while (len > 0)
{
*dst++ = *src++;
len--;
}
return dst - len;
}
这是完全错误的
return *temp;
*temp是字符而不是指针,因此返回temp;这是正确的
顺便说一句:严格来说,我们不是复制字符串,因为C中的字符串是以NUL结尾的字符序列。这里我们只是复制len字节。您做得太多了
你可能想要这个:
char *mystrncpy(char *dst, char *src, size_t len)
{
while (len > 0)
{
*dst++ = *src++;
len--;
}
return dst - len;
}
这是完全错误的
return *temp;
*temp是字符而不是指针,因此返回temp;这是正确的
顺便说一句:严格来说,我们不是复制字符串,因为C中的字符串是以NUL结尾的字符序列。这里我们只是复制len字节。*p=*src+p;这不应该是*p=*src+i;相反?是的,它确实编译了,但没有达到预期效果p