代码来自:
//得9 分 //为了实现链式操作,将目的地址返回,加2 分! char * strcpy( char *strDest, const char *strSrc ) { assert( (strDest != NULL) && (strSrc != NULL) ); char *address = strDest; while( (*strDest++ = * strSrc++) != '/0' ); return address; } //得10 分,基本上所有的情况,都考虑到了 //如果有考虑到源目所指区域有重叠的情况,加1 分! char * strcpy( char *strDest, const char *strSrc ) { if(strDest == strSrc) { return strDest; } assert( (strDest != NULL) && (strSrc != NULL) ); char *address = strDest; while((*strDest++ = *strSrc++)!='/0'); return address; }
strncpy 是 C语言的函数之一,来自 C语言标准库,定义于 string.h,char *strncpy(char *destin, char *source, int maxlen),把src所指由NULL结束的字符串的前n个字节复制到dest所指的数组中。 char *strncpy(char *strDes, const char *strSrc, unsigned int count) { assert(strDes != NULL && strSrc != NULL); char *address = strDes; while (count-- && *strSrc != '/0') *strDes++ = *strSrc++; *strDes = '/0'; return address; }
strcpy和memcpy都是标准C库函数,它们有下面特点:
strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容外,还会复制字符串的结束符。
strcpy的函数原型是:char* strcpy(char* dest, const char* src);
memcpy只提供一般的内存复制,即memcpy对于需要复制的内容没有限制,因此用途更广。
memcpy的函数原型是:void *memcpy(void *dest, const char* src, size_t count);
char *strcpy(char *dest, const char *src)
{
if((src == NULL) || (dest == NULL))
{
return NULL;
}
char *strdest = dest; // 保存目标字符串的首地址
while((*dest++ = *str) != '
{
if((src == NULL) || (dest == NULL))
{
return NULL;
}
char *strdest = dest; // 保存目标字符串的首地址
while((*dest++ = *str) != '