strcpy函数原型1
char * strcpy(char *a,char *b)
{ while((*(a++)=*(b++))!=0);return a;}
strcpy函数原型2
char *strcpy(char *strDest, const char *strSrc);//strDest为目标,strSrc为源
{
assert((strDest!=NULL) && (strSrc !=NULL)); //如果两个为空则不用复制,直接中止
char *address = strDest; //用address指向strDest开始地址
while( (*strDest++ = * strSrc++) != ‘\0’ ) //复制,直到源串结束;
NULL ; //空操作
return address ; //返回strDest开始地址
}
}
使用assert前需要包含头文件assert.h,如果表达式的值为假,整个程序将退出,并输出一条错误信息。如果表达式的值为真则继续执行后面的语句。
自己写strcpy:
#include <stdio.h>
#include <string.h>#include <iostream.h>
char *mystrcpy(char *dst, const char *src)
{
if((dst==NULL)||(src==NULL))
throw "error";
char *dst_temp=dst;
while((*dst++ = *src++) != '\0');
return dst_temp;
}
void main(void)
{
char a[20];
char b[20];
try
{
scanf("%s",b);
mystrcpy(a,b);
int l=strlen(mystrcpy(a,b));
cout<<a<<b<<l;
getchar();
}
catch(char*)
{
cout<<"error";
getchar();
}
}