百试不爽~~~~~~~~
#include <assert.h>
#include <stdio.h>
char * strcpy(char * str_to, const char * str_from);
void * memcpy(void * str_to, const void * str_from, size_t size);
int main(int argc, char* argv[])
{
char from[] = "this is the string will be copied! ";
enum {size = sizeof(from)};
char to[size] = {0};
assert(to != 0);
strcpy(to, from);
printf("use the strcpy : %s.\n", to);
memcpy(to, from, sizeof(from));
printf("use the memcpy : %s.\n", to);
return 0;
}
char * strcpy(char * str_to, const char * str_from)
{
assert(str_to != 0);
assert(str_from != 0);
char * p_to = str_to;
const char * p_from = str_from;
while( (*(p_to++) = *(p_from++)) != '\0' );
return p_to;
}
void * memcpy(void * str_to, const void * str_from, size_t size)
{
assert(str_to != 0);
assert(str_from != 0);
typedef unsigned char byte;
byte * p_to = (byte*)str_to;
const byte * p_from = (const byte *)str_from;
while( size-- > 0)
*(p_to++) = *(p_from++);
return p_to;
}