C语言中strcpy函数的实现
首先,我们要知道的是strcpy函数是c语言中的一个库函数。调用它时需要引用头文件#include <string.h>
其作用是复制一个字符串.并且只能将一个短的字符串复制到一个长的字符串里面去。
在creference中给出的语法是
char * strcpy ( char * destination, const char * source );
#include <stdio.h>
#include <string.h>//我们先来简单的使用一下这个函数int main()
{char arr1[] = "*****************";char arr2[] = "Hello World!";strcpy(arr1, arr2); //这里需要注意的一点是,数组进行传参时,传的是首元素的地址printf("%s", arr1); //字符串的结束标志是'\0'return 0; //在调用strcpy函数的时候,将'\0'也复制到arr2里面去了
}
现在开始来逐步实现strcpy这个函数,包含代码的改进
//第一次代码
#include <stdio.h>void my_strcpy(char* dest, char* src)
{while (*src != '\0') //传入的是目标和源头的地址,要对传入参数的地址进行解引用操作{ //然后进行一个简单的判断*dest++ = *src++; //这是后置加加,要明白的一点是,后置加加是先加加后使用} *dest = *src;
}int main()
{char arr1[] = "*****************";char arr2[] = "Hello World!";my_strcpy(arr1, arr2);printf("%s", arr1);return 0;
}
//代码改进1
#include <stdio.h>void my_strcpy(char* dest, char* src)
{while (*dest++ = *src++) //此代码的改进主要是改进了循环语句,使得我们的代码看起来更加的简短{ //分析一下循环的条件,每次src和dest的地址移动一个字节,再进行解引; //用赋值,当*src = '\0'的时候,循环停止,同时*dest也被赋值}
}int main()
{char arr1[] = "*****************";char arr2[] = "Hello World!";my_strcpy(arr1, arr2);printf("%s", arr1);return 0;
}
//代码的改进2
#include <stdio.h>char* my_strcpy(char* dest, const char* src)//1.
{ //我们希望的是仅dest指向的内容被修改,但是src指向的内容不被修改char* ret = dest; //在进行函数传参的时候,我们有时会将源头参数和终点参数弄反,这时while (*dest++ = *src++) //程序就会出现错误,我们为了保护源头参数,在其前面加入const可保证{ //其修饰的值不能被修改; //2.}return ret; //strcpy返回的是目标空间的起始地址
} //因此,把函数的返回类型修改为char*int main()
{char arr1[] = "*****************";char arr2[] = "Hello World!";my_strcpy(arr1, arr2);printf("%s", arr1);return 0;
}
C语言中strcpy函数的实现相关推荐
- java strcpy,详解C语言中strcpy()函数与strncpy()函数的使用
C语言strcpy()函数:复制字符串 头文件:#include 定义函数: char *strcpy(char *dest, const char *src); 函数说明:strcpy()会将参数s ...
- c语言中strcpy函数的功能是,strcpy函数的作用是是什么?
strcpy,即string copy(字符串复制)的缩写,是一种C语言的标准库函数. strcpy函数的作用:对字符串进行复制(拷贝),把含有"\0"结束符的字符串复制到另一个地 ...
- C语言程序设计中strcpy,C语言中strcpy函数
讲解比较的详细! 已知strcpy函数的原型是 char* strcpy(char* strDest,const char* strSrc); 1.不调用库函数,实现strcpy函数 2.解释为什么要 ...
- c语言 strcpy原型,浅谈C语言中strcpy,strcmp,strlen,strcat函数原型
实例如下: //strcat(dest,src)把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0' char *strcat(char * strDest, cons ...
- C语言中atoi()函数的用法
C语言中atoi()函数的用法 一.学习要点: 1.int atoi(const char *str)把参数str所指向的字符串转换为一个整数: 二.代码 #include<stdio.h> ...
- c语言time函数的作用,c语言中time函数的用法
c语言中time函数的用法 c语言中time函数的用法的用法你知道吗?下面应届毕业生小编就跟你们详细介绍下c语言中time函数的用法的用法,希望对你们有用. c语言中time函数的用法的用法如下: 头 ...
- c语言 strcpy作用,c语言中strcpy的用法
c语言中strcpy的用法的用法你知道吗?下面小编就跟你们详细介绍下c语言中strcpy的用法的用法,希望对你们有用. c语言中strcpy的用法的用法如下: strcpy原型声明:extern ch ...
- 关于C语言中printf函数“输出歧视”的问题
目录 关于C语言中printf函数"输出歧视"的问题 问题描述 探索问题原因 另一种研究方法 问题结论 关于C语言中printf函数"输出歧视"的问题 问题描述 ...
- r语言中c函数错误,R语言中c()函数与paste()函数的区别说明
c()函数:将括号中的元素连接起来,并不创建向量 paste()函数:连接括号中的元素 例如 c(1, 2:4),结果为1 2 3 4 paste(1, 2:4),结果为"1 2" ...
最新文章
- Qt中子线程创建运行时候出现QObject: Cannot create children for a parent that is in a different thread
- Windows上使用gitbook制作电子书
- nyoj 16 矩形嵌套 (DAG上的DP)
- 推荐系统CTR预估学习路线:深度模型
- 说说Shell在代码重构中的应用
- CLR运行时细节 - Method Descriptor
- Akka 配置Dispatcher(一)
- jdbc预编译插入数据操作
- 90后黄金程序员,你不是码农,请自信
- 《Redis开发与运维》学习第四章
- libmodbus 封装成dll_Windows Visual Studio 2017 编译 libmodbus
- win10手动安装打印机驱动
- 外包公司能去吗?进了外包如何翻盘?
- python练手项目pdf_一个不错的练手项目!
- 正则表达式中(RegExp)的字符和转译
- bzoj 3837 (随机过题法了解一下)
- 32位ARM®Cortex®-M0+内核单片机 XL32F003系列MCU
- 笔记|角度传感器angular transducer
- python自动化------问卷星刷问卷3.0版本
- 最好的免费WordPress音频播放器插件