一、自己编写一个标准strcpy函数:
char*strcpy(char*str_dst,const char*str_org)
{
assert( (strDest != NULL) && (strSrc != NULL) );
char *address = strDest;
while( (*strDest++ = * strSrc++) != '/0' );
return address;
}
得分点:
//将源字符串加const,表明其为输入参数,加2分
//对源地址和目的地址加非0断言,加3分
//为了实现链式操作,将目的地址返回,加3分!
二、找错题
试题1:
void test1()
{
char string[10];
char* str1 = "0123456789";
strcpy( string, str1 );
字符串str1需要11个字节才能存放下(包括末尾的'/0'),而string只有10个字节的空间,strcpy会导致数组越界;
试题2:
void test2(){
char string[10], str1[10];
int i;
for(i=0; i<10; i++)
{
str1 = 'a';
}
strcpy( string, str1 );
C语言标准库函数
void test3(char* str1)
{
char string[10];
if( strlen( str1 ) <= 10 )
{
strcpy( string, str1 );
}