C 实现复制字符串函数:strcpy

函数原型:char *strcpy(char *dst,char const *src)

其中,dst 表示目标字符串的地址,src 表示源字符串的地址。strcpy 函数返回的是指向目标字符串的指针。strcpy 函数的作用是将 src 指向的字符串复制到 dst 所指向的位置,包括字符串末的’\0’字符。由于原字符串必须以’\0’结尾,因此通常情况下为了防止越界,目标字符串空间应该比源字符串大至少1个字节。

 

#include
#include
#include
#include
using namespace std;
void myStrcpy0(char* dest, const char* src) {
	dest =(char*) malloc(strlen(src) + 1);
	int i = 0;
	assert(src);
	while (src[i]!='\0')
	{
		dest[i] = src[i];
		i++;
	}
	
	assert(dest);
	dest[i] = '\0';
	printf("myStrcpy0目标字符串:%s \n",dest);
}
void myStrcpy1(char* dest, const char* src) {
	dest = (char*)malloc(strlen(src) + 1);
	char* p = dest;
	//assert(src);
	while (*src != '\0')
	{
		*dest = *src;
		dest++;
		src++;
	}
	//assert(dest);
	*dest = *src;
	dest = p;
	printf("myStrcpy1目标字符串:%s \n", dest);
}
void myStrcpy2(char* dest, const char* src) {
	dest = (char*)malloc(strlen(src) + 1);
	char* p = dest;
	assert(src);
	while (*src != '\0')
	{
		*dest++ = *src++;
	}
	*dest = *src;
	dest = p;
	printf("myStrcpy2目标字符串:%s \n", dest);
}
void myStrcpy3(char* dest, const char* src) {
	dest = (char*)malloc(strlen(src) + 1);
	char* p = dest;
	assert(src);
	while ( *dest++ = *src++) //既可以先复制,当复制'\0'后,条件判断为假,又可以退出循环
	{
		;
	}
	dest = p;
	printf("myStrcpy3目标字符串:%s \n", dest);
}
int main() {
	const char* src = "hello world,heheda";
	char* dest = nullptr;
	myStrcpy0(dest,src);
	myStrcpy1(dest,src);
	myStrcpy2(dest,src);
	myStrcpy3(dest,src);
	return 0;
}

C 实现复制字符串函数:strcpy_第1张图片

 

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