目录
下面详细解释该函数
1. 功能介绍 1.1. 功能界面
char * __cdecl strcpy(char * dst, const char * src);
这里是库函数中的函数定义接口。 该函数的作用是将一组字符串复制到另一组字符串中,也就是所谓的复制字符串函数。
1.2. 功能分析
1. 这里,源字符串被复制到目标字符串空间。
2. 源字符串必须以“/0”结尾。
3. 复制将复制源字符串中的'\0'。
4、目标空间必须足够大,并且必须是可变的。
图形分析:
2.库函数源码
char * __cdecl strcpy(char* dst, const char* src) { char * cp = dst; while((*cp++ = *src++) != '\0') ; return( dst ) }
2.1. 库函数分析
分析:
1、这里dst是指向目标字符空间的指针,所以不能用const修饰,必须是变量; src是源字符串,源字符串可以用const修改。
2、这里的源字符串src末尾必须包含'\0',这样循环中的判断条件才能成立。
3、这里*cp++ = *strc++比较方便,也缩短了代码量。
3. 模拟实现功能 3.1. 模拟实施
char* my_strcpy(char* str2,const char* str1) { char* first = str2; assert(str2 && str1);//这里注意,尽量把assert放在char* //first的下一行 //有的编译器中若将assert放在最前面,可能无法编译,因为C语言规定变量的常见必须放在代码前面 while (*str2++ = *str1++) { ; } return first; } int main(void) { char ch1[] = "abcde"; char ch2[] = "XXXXXXXXXXXX"; printf("%s\n", my_strcpy(ch2, ch1));//这里是链式访问 //在一个函数里面去访问另一个函数的值,就是链式访问 }
分析总结:
1.尽量不要返回局部变量的地址。 (因为函数内部使用局部变量后:退出函数后,其局部变量空间会被破坏,不再指向这个函数之前使用过的地址,因此无法访问之前使用过的地址。将会发生非法内存访问错误)。
2. 当指针不知道要赋什么值时,给它NULL。
3. 指针使用完毕后,赋予NULL。
写在背面
朋友们,相聚的时间总是短暂的,又到了告别的时候了~不过面试的时候经常会被问到字符串,是为了模拟某个字符串函数的实现,所以我们不能只在日常生活中使用它。 头文件直接调用,不了解原理~要把字符串函数理解透、理解透、理解透。
上面的代码就可以运行了。 使用的编译环境为:运行时请添加编译头文件#NGS 1
这篇关于彻底掌握C语言函数使用的文章到此结束。 有关C语言函数的更多信息,请搜索 House之前的文章或继续浏览以下相关文章。 希望大家以后多多支持 House。 !