strcpy() 函数用来复制字符串,其原型为:
char *strcpy(char *strDest, const char *strSrc);
其中,strDest是目的字符串,strSrc是源字符串。要求不调用 strcpy() 函数,自定义函数 myStrcpy() 函数,实现与 strcpy() 函数相同的功能。
该题目考察读者的基础知识是否扎实,告诉我们,面对常用的这些函数,不能只知其然而不知其所以然。
先看代码:
#include <stdio.h>
#include <string.h>
#define STR_LEN 30
char *myStrcpy(char *strDest, const char *strSrc){
if(strDest == NULL || strSrc == NULL)
return NULL;
if(strDest == strSrc)
return strDest;
char *tempptr = strDest ;
while( (*strDest++ = *strSrc++) != '\0');
return tempptr ;
}
int main( void ){
char *strSrc = "http://www.baidu.com";
char strDest[STR_LEN];
memset(strDest,0 , STR_LEN); // 将strDest指向的内存全部设置为 NUL
printf("strDest = %s\n", strDest);
myStrcpy(strDest, strSrc);
printf("strDest = %s\n", strDest);
return 0;
}
运行结果:
注意:memset() 函数用来将内存设置为指定的值。memset(strDest,0 , STR_LEN); 将strDest指向的内存全部设置为 NUL,即 '\0',否则第一次输出的为垃圾内容;如果设置为其他值,第一次输出时找不到字符串结束标志 NUL,读取返回会超出 strDest 指定的内存空间。