strcpy函数

目录

1.1 strcpy函数

1.2 strcpy函数的用法

     strcpy拷贝字符串

1.3 自定义函数实现strcpy


1.1 strcpy函数

#include

int main()
{
	char* strcpy(char* strDestination, const char* strSource);

	return 0;
}

 定义:返回目标字符串

头文件:  

注释:strcpy函数的作用是将strSource(包括结束空字符)复制到strDestination指定的位置。复制或追加字符串时不执行溢出检查(需要自己判断strDestination空间>=strSource空间)。

注:strSource:源头字符串

       strDestination 目标字符串

        简单理解为是把原指针指向的内容拷贝到目标指针的空间上去

        Char*在这里的作用是:当把源头数据拷贝过去的时候,我们期望目标空间发生变化,可能会使用目标空间的内容,所以需要返回的是目标空间的起始地址

       const:变量和文件本身都有读写的权限,由const修饰时缩小变量的权限,让变量只能读不能写。也是为了提高代码的安全性。

1.2 strcpy函数的用法

strcpy拷贝字符串

示例:将arr1 里的字符串拷贝到 arr2

#include
#include

int main()
{
	char arr1[] = "abcdef";
	char arr2[] = "xxxxxx";
	
	strcpy(arr2, arr1);

	printf("%s\n", arr2);

	return 0;
}

1.3 自定义函数实现strcpy

#include
#include

void my_strcpy(char* dest,char* sour)
{
	while (*sour!= 0)
	{
		*dest = *sour;
		dest++;
		sour++;
	}
	*dest = *sour;
}

int main()
{
	char arr1[] = "hello";
	char arr2[] = "xxxxxx";

	my_strcpy(arr2, arr1);

	printf("%s\n", arr2);
	return 0;
}
 

简单了解一下思路:

这里我们写一个函数my_strcpy

返回类型置成void

首先这里传过来arr1和arr2的地址,用*sour和*dest接收

其次从*sour第一个字符开始,将每个字符赋值给*dest 。然后sour++,dest++找到后面的元素进行赋值

写成循环的方式,判断条件是 *sour, \0 之前元素的ASCII值不等于0,如果等于0,就说明访问到了\0,跳出循环

最后会发现只剩下一个\0没有传给*dest,最后再*dest = *sour;//(*sour == \0 == 0)


这应该是大部分人写出的代码,这里我们做一些简单的优化。

#include
#include
#include

char* my_strcpy(char* dest, const char* sour)
{
	assert(dest && sour);
	char* ret = dest;
	while (*dest++ = *sour++)
	{
		;
	}
	return ret;
}

int main()
{
	char arr1[] = "hello";
	char arr2[] = "xxxxxx";

	printf("%s\n", my_strcpy(arr2, arr1));

	return 0;
}

strcpy函数_第1张图片


 以上仅供参考

你可能感兴趣的:(c语言,c++,开发语言)