【C语言】strcpy函数_字符串拷贝【详解】

【C语言】strcpy函数_字符串拷贝【详解】文章目录前言一、认识并使用strcpy函数二、模拟实现strcpy函数1.明确思路实现代码前言strcpy,即stringcopy(字符串复制)的缩写。strcpy是C++语言的一个标准函数,strcpy把含有’\0’结束符的字符串复制到另一个地址空间。strcpy的头文件:string.h一、认识并使用strcpy函数1.库函数中strcpy函数的声明char*strcpy(char*destination,constchar*source);2.认识strcpy函数第一

前言:在C/C++的学习过程当中一定一定要多刷题,牛客网作为国内内容超级丰富的IT题库,尤其是它的C、C++,有从入门到大厂真题,而且大部分的考试题目也是从中抽取,还有很多面经,推荐大家去牛客网进行刷题练习,点击链接牛客网刷题入口


前言

strcpy,即string copy(字符串复制)的缩写。
strcpy是C++语言的一个标准函数 ,strcpy把含有’\0’结束符的字符串复制到另一个地址空间。

strcpy的头文件:string.h

一、认识并使用strcpy函数

1.库函数中strcpy函数的声明

char* strcpy(char* destination,const char* source);

2.认识strcpy函数
第一,strcpy函数最后返回的是目的地字符串首元素的地址,所以返回类型是char*,由于我们只是把一个字符串复制到另一个地址空间,所以源头字符串不会被修改,所以我们用const修饰,比较安全。strcpy是将源头字符串包括’\0’复制到另一个地址空间,这样才能确保目的地字符串有字符串结束的标志’\0’,程序不会崩溃。
3.使用strcpy函数

#include<stdio.h>
int main()
{ 
   
	char arr1[30] = "hello";
	char arr2[] = "world";
	strcpy(arr1, arr2);
	printf("%s", arr1);//world
	return 0;
}

4.注意
(1)目标空间必须足够大,以确保能放的下复制过来的字符串
(2)目标空间必须可变,即char* destination不能用const修饰,并且目的地空间的字符串不能是常量字符串常量字符串不可被修改。以下为错误示范:

char *arr1="abcdefghi";//常量字符串,用指针变量arr1保存

(3)源字符串必须含有’\0’,以下为错误示范

char arr2[]={ 
   'a','b','c'};//错误示范

(4)strcpy会将源字符串的’\0’也拷贝到目的地空间
(5)学会strcpy的模拟实现

二、模拟实现strcpy函数

1.明确思路

(1)指针断言,安全性优化,保证dest和src均不为空指针
(2)保留目的地字符串首元素地址,因为在拷贝过程中,dest++,一直往后移动
(3)最开始,指针dest指向arr1的首元素地址,指针src指向arr1的首元素地址,然后我们一个个向后走,依次赋值,直到*dest=*src=‘\0’,表达式的结果同时作为循环的判断条件。

实现代码

#include<stdio.h>
#include<assert.h>
char* my_strcpy(char* dest, const char* src)
{ 
   
	//指针断言
	assert(dest != NULL);
	assert(src!= NULL);
	//由于在赋值过程中,dest的指向会被更改
	//所以先保留首元素地址
	char* ret = dest;
	while (*dest++ = *src++)
	{ 
   
		;
	}
	return ret;
}
int main()
{ 
   
	char arr1[30] = "hello";
	char arr2[] = "hello world!!!!!!";
	my_strcpy(arr1, arr2);
	printf("%s", arr1);
	return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/35293.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注