使用指针的strcopy函数不起作用
我需要创建一个函数,该函数接收两个char指针,并将其中一个指针的内容复制到另一个指针中,然后返回指针的开头。我已经花了几个小时来处理这个问题,并且已经阅读了100个完全不同的例子。以下是我现在拥有的:使用指针的strcopy函数不起作用,c,pointers,strcpy,C,Pointers,Strcpy,我需要创建一个函数,该函数接收两个char指针,并将其中一个指针的内容复制到另一个指针中,然后返回指针的开头。我已经花了几个小时来处理这个问题,并且已经阅读了100个完全不同的例子。以下是我现在拥有的: char * mystrcpy(char * dest, char * src) { while(1) { if(*src == '\0') { *dest = '\0'; return dest;
char * mystrcpy(char * dest, char * src) {
while(1) {
if(*src == '\0') {
*dest = '\0';
return dest;
}
else {
*dest = *src;
*src++;
*dest++;
}
}
您想要的是递增指针,而实际上递增指针指向的字符 改变
*src++;
*dest++;
致:
您想要的是递增指针,而实际上递增指针指向的字符 改变
*src++;
*dest++;
致:
dest是一个指针,您移动它是为了从src复制值
所以,当您返回dest时,它已经指向字符串的末尾
所以不要移动这个指针,只需使用索引将值复制到它
int i=0;
while( *src)
{
dest[i] = *src;
i++;
src++;
}
dest[i] = '\0';
return dest;
因此,即使将*dest++修改为dest++,返回的内容也不会给出预期的结果
dest是一个指针,您移动它是为了从src复制值
所以,当您返回dest时,它已经指向字符串的末尾
所以不要移动这个指针,只需使用索引将值复制到它
int i=0;
while( *src)
{
dest[i] = *src;
i++;
src++;
}
dest[i] = '\0';
return dest;
因此,即使将*dest++修改为dest++,返回的内容也不会给出预期的结果。这两行:
*src++;
*dest++;
应该是:
src++;
dest++;
请注意,由于代码需要增加指针,而不是指针指向的对象,因此没有取消指针引用
最好保存dest的初始值,这样就可以返回它。为了避免丢失dest缓冲区中已有的任何字符串,我怀疑dest保存后的值需要增加dest+=strlendest
因此,这两个字符串的集中出现,而不是覆盖dest中的初始字符串
在调用该函数之前,应该检查dest缓冲区是否足够长,以容纳两个字符串+1的strlen
+1允许终止字节。这两行:
*src++;
*dest++;
应该是:
src++;
dest++;
请注意,由于代码需要增加指针,而不是指针指向的对象,因此没有取消指针引用
最好保存dest的初始值,这样就可以返回它。为了避免丢失dest缓冲区中已有的任何字符串,我怀疑dest保存后的值需要增加dest+=strlendest
因此,这两个字符串的集中出现,而不是覆盖dest中的初始字符串
在调用该函数之前,应该检查dest缓冲区是否足够长,以容纳两个字符串+1的strlen
+1允许终止字节。您正在递增字符而不是指向字符的指针,并且无法跟踪目标字符串的开头。首先尝试一些简单的练习。您正在递增字符而不是指向它们的指针,并且无法跟踪目标字符串的开头。先做一些简单的练习。做完之后,我返回的结果仍然不能给我正确的输出。例如,如果我给一个src作为Hello world,它返回@Cory你正在移动你的指针,这是错误的,以便返回值在这样做之后,我返回的仍然没有给我正确的输出。例如,如果我给一个src命名为helloworld,它返回@Cory,你正在移动你的指针,这是错误的,为了返回更有意义的值。非常感谢!这更有意义。非常感谢!