字符串复制函数strcpy的实现算法
2015-09-05 12:08
477 查看
1,字符串复制,需要考虑三种情况:
目的字符串未被赋值,本身是个空串,源字符串存在。
目的字符串长度m大于或等于源字符串长度n,此时复制时,源字符串代替目的字符串前n个字符,目的字符串后m-n个字符扔被保留,不需要在结尾再补上字符串结束标志’\0',因为目的字符串的结束标志会被保留。
目的字符串长度m小于源字符串长度n,此时复制时,源字符串前m个字符相当于覆盖了目的字符串,后n-m个字符也要复制到目的字符串中,在实现的过程中,我们是以当前字符不等于字符串结束标志’0‘来循环复制的,有效字符复制结束后,还需要在结尾再补上‘\0'。这种情况的复制,和第一种复制的效果是一样的,都是源字符串覆盖目的字符串,只不过第一种情况目的字符串为空串。
2,代码如下:
3,运行结果示意图
目的字符串未被赋值,本身是个空串,源字符串存在。
目的字符串长度m大于或等于源字符串长度n,此时复制时,源字符串代替目的字符串前n个字符,目的字符串后m-n个字符扔被保留,不需要在结尾再补上字符串结束标志’\0',因为目的字符串的结束标志会被保留。
目的字符串长度m小于源字符串长度n,此时复制时,源字符串前m个字符相当于覆盖了目的字符串,后n-m个字符也要复制到目的字符串中,在实现的过程中,我们是以当前字符不等于字符串结束标志’0‘来循环复制的,有效字符复制结束后,还需要在结尾再补上‘\0'。这种情况的复制,和第一种复制的效果是一样的,都是源字符串覆盖目的字符串,只不过第一种情况目的字符串为空串。
2,代码如下:
#include "stdafx.h" #include<stdio.h> #include"global.h" #include <assert.h> #include<string.h> #include<malloc.h> #include<stdlib.h> char* springCopy(char*to,char*from) { int i=0,j=0; assert(to!=NULL&&from!=NULL); while(*to!='\0'&&*from!='\0') *to++=*from++; if(*to=='\0')//如果源字符串长度大于目的字符串长度,则复制完后,需要在结尾加上字符串结束标志。 { while(*from!='\0') *to++=*from++; *to='\0'; } return to; } void main() { char*f; char*t; f=(char*)malloc(20); if(f==NULL) { printf("不能成功分配存储空间"); exit(1); } t=(char*)malloc(20); if(t==NULL) { printf("不能成功分配存储空间"); exit(1); } printf("**********************************\n"); printf(" 实现字符串复制函数strcpy \n"); printf("**********************************\n"); printf("请输入目的字符串A:\n"); scanf("%s",f); printf("\n"); printf("请输入源字符串B:\n"); scanf("%s",t); printf("\n"); springCopy(f,t); printf("输出从字符串B复制到字符串A中的结果:"); printf("%s",f); printf("\n"); printf("\n"); }
3,运行结果示意图
相关文章推荐
- MySQL常用操作
- CSS实现提示框的效果
- didFailWithError: Error Domain=kCLErrorDomain Code=0 “The operation couldn’t be completed. (kCLError
- mac下使用QuickTime录屏及上传youku注意事项
- iOS8 Core Image In Swift:自动改善图像以及内置滤镜的使用
- GDB调试ARM程序
- 修改MySQL的默认密码的四种小方法
- 解决ngnix服务器上的Discuz!x2.5 Upload Error:413错误
- LeetCode Roman to Integer
- c语言常见的几种排序方法总结
- Html页中使用OCX控件
- django 1.8 官方文档翻译: 3-3-4 管理文件
- 【Android进阶】-Android组合的方式自定义控件
- 漫谈C指针第六讲---从 const int i 说起
- 新手引导
- 80X86寄存器详解<转载>
- 线上PHP问题排查思路与实践
- 线性规划与网络流24题 02太空飞行计划问题 最小割
- 线性规划与网络流24题 01飞行员分配方案问题
- HDU 1398 Square Coins(母函数或dp)