自定义一个函数,实现C语言中strcpy()函数的功能
strcpy() 函数用来复制字符串,其原型为:
char *strcpy(char *strDest, const char *strSrc);
其中,strDest是目的字符串,strSrc是源字符串。要求不调用 strcpy() 函数,自定义函数 myStrcpy() 函数,实现与 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.coderbbs.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; }运行结果:
strDest = strDest = http://www.coderbbs.com注意:memset() 函数用来将内存设置为指定的值。memset(strDest,0 , STR_LEN); 将strDest指向的内存全部设置为 NUL,即 '\0',否则第一次输出的为垃圾内容;如果设置为其他值,第一次输出时找不到字符串结束标志 NUL,读取返回会超出 strDest 指定的内存空间。