怎样实现字符串的复制,下面程序有什么错误?

#include
using namespace std;
char *strcpy(char *dest,const char *source);
int main()
{
char a[15];
char b[15]={"hello"};
cout<<strcpy(a,b)<<endl;
return 0;
}
char *strcpy(char *dest,const char *source)
{
while(*dest++==*source++)
return dest;
}

while(*dest++==*source++)双等号改成单等号

#include<iostream>
#include <assert.h>

using namespace std;

char *my_copy(char *dest,const char *src);

int main(int argc,char *argv[])
{
    char dest[255] = {};
    char src[255] = "Hello World!";
    my_copy(dest,src);

    printf("dest str=%s\n",dest);

    return 0;
}

char *my_copy(char *dest,const char *src)
{
    assert(dest != NULL && src != NULL);
    char *res = dest;
    while ((*dest++ = *src++) != '\0') {

    }
    return res;
}

感觉用【】更容易理解
char *strcpy(char *dest,const char *source)
{
int i=0;
while(source[i]!='\0')
{
dest[i]=source[i];
i++;
}
dest[i]='\0';
return dest;
}
你的做法把return语句包含到while循环里了所以while只循环了一次,应该在while后面加个分号,还有就是你的dest++之后,不再指向字符串的第一个字符了,所以return dest也得不到你想要的结果
你可以改成这样
char *strcpy(char *dest,const char *source)
{
char *old=dest;
while(*dest++=*source++);
return old;
}

把函数char *strcpy(char *dest,const char *source)中的const 删掉