1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 【C语言】strcpy函数_字符串拷贝【详解】

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

时间:2021-03-12 17:06:20

相关推荐

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

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

文章目录

前言一、认识并使用strcpy函数二、模拟实现strcpy函数1.明确思路实现代码

前言

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);//worldreturn 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;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。