自写strcpy

<span style="font-size:32px;color:#009900;">代码:</span>
#include<stdio.h>
char *my_strcpy(char *dest,const char *src)
{
	char *ret = dest;//保存数组的首地址,下面的操作会改变dest的值
	while((*dest = *src) != '\0')//将src数组的内容全部赋给dest,包括'\0',当'\0'拷贝过去之后拷贝完成即函数结束
	{
		src++;
		dest++;
	}
	return ret;
}
int main()
{
	char a[20] = "acdefghiji";
	char b[] = "edfssss";
	printf("%s\n",my_strcpy(a,b));
	return 0;
}

mystrcpy也可以改的更加简洁:see:

char *my_strcpy2(char *dest,const char *src)
{
	char *ret = dest;
	while((*(dest++) = *(src++)) != '\0');
	return ret;
}

缺点:多执行了一步后置++,虽然对函数功能无影响,不太好理解

优点:代码简洁

时间: 2024-10-01 05:22:48

自写strcpy的相关文章

C语言中strcpy,strcmp,strlen,strcat函数原型

//strcat(dest,src)把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0' char *strcat(char * strDest, const char *strSrc) { char *res=strDest; assert((strDest!=NULL)&&(strSrc!=NULL)); while(*strDest)strDest++; while(*strDest=*strSrc) { strDest++; strSrc++; }

strcpy、strcat、strstr的实现

参考:www.cnblogs.com/carsonzhu/p/5277036.html 字符串拷贝函数strcpy的原型: char *strcpy(char *strDest,const char *strSrc); strcpy函数将strSrc拷贝至输出参数strDest中,同时函数的返回值又是strDest.这样做并非多此一举,可以获得如下灵活性: char str[20]; int length = strlen( strcpy(str, “Hello World”) ); 作用:为了

RQNOJ144伯虎点秋香(水)

又是一道水题,转语言就是这样,经常被水题虐翻... 这种水题似乎不适合写出来,不过也没办法,没题目交了字符串处理:           RQNOJ144 伯虎点秋香 题目描述 题目描述: 上次唐伯虎点秋香那是秋香自己跑出来滴,这次他可要真的自己点了,下面由我来描述一下点的规则.当然事先要列举所有姑娘的匿名咯,我要对他进行1次提问,我问他对第几个姑娘感兴趣,他选的当然是他的意中人咯. 输入格式 第一行为一个整数小于1001的整数n,k.从第二行到第n+1行是对每个姑娘的名字. 输出格式 输出文件有

人人,金山西山居,腾讯互娱,微信,网易游戏offer及面经

转自:http://www.itmian4.com/forum.php?mod=viewthread&tid=3985 首先感谢师兄在两年前发的贴([天道酬勤] 腾讯.百度.网易游戏.华为Offer及笔经面经 ),这篇文章对我帮助很大. 我写这篇文章一是为了感谢这位同是华南理工但素未谋面的师兄,给我推荐这篇文章的炳爷,以及为我解决难题的浩子,羊兄给的项目帮助,洁洁的理解,王兄提供的两个月免费住宿,以及互娱的BOSS,leader,金山的朱先生等人对我择业的帮助,以及所有直接间接帮助过我的人.二是

【学习ios之路:C语言】指针

指针 1.指针定义,即简单用法. <span style="font-size:14px;"> //指针变量:专门用来存储地址的变量. int *p = NULL;//NULL == 0 /** * 变量定义时: * (int *):指针类型 * p: 变量名 NULL:初始值. * NULL(指向了一个无效的区域) * *的作用: 告诉编译器,后面变量是指针变量,用来存储地址. * int作用: 1.当通过指针变量取数据时,一次性读取几个字节的数据. 2.当指针变量+1时

根据文件夹地址获取txt文件并获取txt内容索引

本文章原创,引用转载请注明作者出处. 这两天写了一个小的C++程序,用的开发工具是visual studio.个人感觉Microsoft做的visual studio真心的很强大,推荐大家在开发c\c++,以及c#,asp.net等一些软件的时候可以使用visual studio. 说一下我开发的的程序效果:输入一个文件夹地址,程序可以遍历该文件夹以及该文件夹中所有子文件夹中文件,经过判断获取所有txt类型文件地址,并进入txt文件根据txt文件内容生成索引返回.之后用户可以输入关键字,程序返回

byr面经两则

人人,金山西山居,腾讯互娱,微信,网易游戏offer及面经 首先感谢师兄在两年前发的贴([天道酬勤] 腾讯.百度.网易游戏.华为Offer及笔经面经 ),这篇文章对我帮助很大. 我写这篇文章一是为了感谢这位同是华南理工但素未谋面的师兄,给我推荐这篇文章的炳爷,以及为我解决难题的浩子,羊兄给的项目帮助,洁洁的理解,王兄提供的两个月免费住宿,以及互娱的BOSS,leader,金山的朱先生等人对我择业的帮助,以及所有直接间接帮助过我的人.二是饮水思源,要把这份活水转赠出去以帮助到更多的人. 我用完之后

多进程编程之进程间通信-管道和消息队列

1.进程间通信 Linux作为一种新兴的操作系统,几乎支持所有的Unix下常用的进程间通信方法:管道.消息队列.共享内存.信号量.套接口等等. 2.2.1 管道 管道是进程间通信中最古老的方式,它包括无名管道和有名管道两种,前者用于父进程和子进程间的通信,后者用于运行于同一台机器上的任意两个进程间的通信. 无名管道pipe 无名管道由pipe()函数创建: #include <unistd.h> int pipe(int filedis[2]): 参数filedis返回两个文件描述符:file

我的大厂面试经历(附100+面试题干货)

在这里提供一下自己复习的东西吧,我也就把这个东西给搞了一遍,然后面试基本没啥问题了,如果问的很深的话,那就只能只求多福了兄弟!其中可能有一些错误或者由于编译环境有差异请大家自动忽略这些错误. 1:信号的生命周期? 信号产生->信号在进程中注册->信号在进程中的注销->执行信号处理函数 2:信号的产生方式? (1)当用户按某些终端键时产生信号(2)硬件异常产生信号[内存非法访问](3)软件异常产生信号[某一个条件达到时](4)调用kill函数产生信号[接受和发送的所有者必须相同,或者发送的