strcpy函数编写分析
来源:互联网 发布:vscode lua 编辑:程序博客网 时间:2024/05/17 18:26
复制字符串
1 #include<stdio.h>
2 #include<string.h>
3 char *strcpy(char *strDest,const char *strSrc)
4 {
5 if((strDest == NULL) || (strSrc == NULL))
6 return NULL;
7 char *strDestCopy = strDest; //保存字符串的首地址
8 while((*strDest++ = *strSrc++) != '\0');
9 return strDestCopy;
10 }
11
12 int main()
13 {
14 char strSrc[] = "hello world ";
15 char strDest[20];
16 int len =0;
17 len = strlen(strcpy(strDest,strSrc));//链式表达式,先复制,后计算长度
18 printf("strDest :%s\n",strDest);
19 printf("strSrc:%s\n",strSrc);
20 }
其实说实话,在编写strcpy这个函数,我们主要理解一句代码就ok了!
while((*strDest++ = *strSrc++) != '\0');
这句代码我们分开来看:
while(*strSrc!='/0')
{
*strDest=*strStr;
strDest++;
strStr++;
}
*strDest=*strSrc;
通常一个问题就来了:
为什么strcpy函数要返回char* 类型呢?
这是为了能使用链式表达式。由于在strcpy中使用了char *返回类型,因此之间可以使用len = strlen(strcpy(strDest,strSrc));//链式表达式,先复制,后计算长度这种方法来同时做两个操作。
那是什么叫做链式表达式呢?为什么要用链式表达式呢?
就是方便一些,否则就要这样写:
char strDest[12];
strcpy( strDest, “hello world”);
int length = strlen(strDest);
什么链式就是一连串写下来的意思。。。
如果上面的字符串拷贝函数strcopy的返回值是void,那么,上面那句:int length = strlen( strcpy( strDest, “hello world”) );
,写成好几句了:
char strDest[12];
strcpy( strDest, “hello world”);
int length = strlen(strDest);
而这种直接返回char *的手段,就是为了后来函数调用者方便而设计的.不用你这么麻烦用上述方法去使用了,而直接可以使用拷贝后的dest字符串了.这种方便的实现方法,看起来就是链子链在一起的,所以称为 链式表达式
- strcpy函数编写分析
- 【算法】编写strcpy函数
- 编写strcpy函数
- 编写 strcpy 函数
- 编写strcpy函数
- 编写strcpy函数
- 编写strcpy()函数
- 编写strcpy函数
- 请编写函数 strcpy
- 编写strcpy 函数
- 编写strcpy函数
- 96 编写 strcpy 函数
- 编写strcpy函数
- 自行编写Strcpy()函数
- 编写strcpy函数
- 自行编写strcpy()函数
- 编写strcpy函数
- 分析strcpy函数
- IQ使命 Marrakech 马拉喀什(六边形图案)攻略
- Spark History Server之坑爹的360安全浏览器
- IQ使命 Luxor 埃及卢克索(华容道) 攻略
- python模块urllib2详解二
- IQ使命 Antwerp 安特卫普(选宝石放木块) 攻略
- strcpy函数编写分析
- IQ使命 Monte Carlo 蒙特卡洛(推箱子)攻略
- IQ使命 北京(建长城)攻略
- IQ使命 Paris 巴黎(构建旋转图)攻略
- IQ使命 Rapa Nui 复活岛(智力大逃亡)攻略
- IQ使命 London 伦敦(一笔画)攻略
- iterm2+oh my zsh
- CSS规范
- Python进阶(三十七)-Windows7使用nginx+apache部署django项目