已知strcpy的函数原型:char *strcpy(char *strDest, const char *strSrc)其中strDest 是目的字符串,strSrc 是源字符串。不调用C++/C 的字符串库函数,请编写函数 strcpy。
/*
编写strcpy函数(10分)
已知strcpy函数的原型是
char *strcpy(char *strDest, const char *strSrc);
其中strDest是目的字符串,strSrc是源字符串。
(1)不调用C++/C的字符串库函数,请编写函数 strcpy
(2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?
答:为了 实现链式表达式。 // 2分
例如 int length = strlen( strcpy( strDest, “hello world”) );
*/
#include <assert.h>
#include <stdio.h>
char*strcpy(char*strDest, constchar*strSrc)
{
<span style="white-space:pre"> </span>assert((strDest != NULL) && (strSrc != NULL)); // 2分
<span style="white-space:pre"> </span>char* address = strDest; // 2分
<span style="white-space:pre"> </span>while( (*strDest++ = *strSrc++) != '\0' ) // 2分
<span style="white-space:pre"> </span>NULL;
<span style="white-space:pre"> </span>return address ; // 2分
}
另外strlen函数如下:
#include<stdio.h>
#include<assert.h>
int strlen( constchar*str ) // 输入参数const
{
<span style="white-space:pre"> </span>assert( str != NULL ); // 断言字符串地址非0
<span style="white-space:pre"> </span>int len = 0;
<span style="white-space:pre"> </span>while( (*str++) != '\0' )
<span style="white-space:pre"> </span>{
<span style="white-space:pre"> </span>len++;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>return len;
}