#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 删掉