彻底掌握C语言strcpy函数的用法

 2024-01-29 03:02:15  阅读 0

目录

下面详细解释该函数

1. 功能介绍 1.1. 功能界面

char * __cdecl strcpy(char * dst, const char * src);

这里是库函数中的函数定义接口。 该函数的作用是将一组字符串复制到另一组字符串中,也就是所谓的复制字符串函数。

1.2. 功能分析

1. 这里,源字符串被复制到目标字符串空间。

2. 源字符串必须以“/0”结尾。

3. 复制将复制源字符串中的'\0'。

4、目标空间必须足够大,并且必须是可变的。

图形分析:

c语言字符串strlen_c语言实现字符串strcpy_c语言字符串strcmp

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。 !

标签: 函数 字符 拷贝

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码