0
点赞
收藏
分享

微信扫一扫

字符串函数--strcpy以及模拟实现

扬帆远航_df7c 2022-05-05 阅读 84
c语言
strcpy
char* strcpy(char* destrination, const char source);

1.源字符串必须以’\0’结束
2.会将字符串中的‘\0’拷贝到目标空间
3.目标空间必须足够大,以确保能够存放源字符串
4.目标空间必须可变

strcpy函数的分析
#include<stdio.h>

int main() {
	
	char arr1[10] = "abcde";
	const char arr2[] = "mf";
	strcpy(arr1, arr2);
	printf("%s\n", arr1);;
	getchar();
	return 0;
}

拷贝前:
在这里插入图片描述
拷贝后
在这里插入图片描述
所以拷贝后再次打印arr1的内容时,就变成了mf.

srrcpy函数的模拟实现
#include<stdio.h>
#include<assert.h>
char* my_strcpy(char* dest,char* scr) {
	char* dest1 = *dest;
	assert(dest!= NULL);
	assert(scr != NULL);
	// 拷贝字符串到目的地址
	while (*scr != '\0') {
		*dest = *scr;
		dest++;
		scr++;
	}
	*dest = *scr;
	//返回原目的地址
	return dest1;
}

int main() {
	
	char arr1[10] = "abcde";
	char arr2[] = "mf";
	my_strcpy(arr1,arr2);
	printf("%s\n", arr1);
	getchar();
	return 0;
}

my_strcpy函数优化

char* my_strcpy(char* dest,char* scr) {
	char* dest1 = *dest;
	assert(dest!= NULL);
	assert(scr != NULL);
	// 拷贝字符串到目的地址
	while (*dest++ = *scr++) {
		;
	}
	//返回原目的地址
	return dest1;
}

*dest++ = *scr++:当 *scr 为‘\0’时,将其赋值给 *dest,整个表达式返回值为null;

举报

相关推荐

0 条评论