码迷,mamicode.com
首页 > 编程语言 > 详细

C语言::模拟实现strcat函数

时间:2016-08-07 12:46:27      阅读:393      评论:0      收藏:0      [点我收藏+]

标签:

题目要求

编写一个C语言程序模拟实现strcat函数.

(我们不妨先模拟实现一下strcat函数,然后再对照一下string.h库函数中strcat函数代码的实现,与大师肩并肩.)

算法分析

strcat函数功能:将两个字符串连接起来,最终返回连接后字符串的首地址.

strcat函数原型:char *strcat(char *dest,const char *src);

我们清楚地了解了strcat函数功能和原型之后,就很容易分析出算法...

算法总结

第一步:将dest指向的内容循环遍历至’\0’的部分.

第二步:将src指向的内容循环拷贝给dest,包括src后面的’\0’.

核心代码

//模拟实现strcat函数
char *my_strcat1(char *dest,const char *src){
	char * ret = dest;
	//对接受到的两个指针进行断言
	assert(dest);
	assert(src);
	//将dest遍历至\0
	while(*dest){
		dest++;
	}
	//将src内容复制在dest之后
	while(*src){
		*dest++ = *src++;
	}
	//在dest后面追加\0
	*dest = ’\0’;
	return ret;
}

完整测试代码

/*
*本代码由高小调原创,版权归高小调博客所有 
*作者:高小调
*日期:2016-8-7
*代码功能:模拟实现strcat函数
*集成开发环境:Microsoft Visual Studio 2010 
*/
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
//模拟实现strcat
char *my_strcat1(char *dest,const char *src){
	char * ret = dest;
	//对接受到的两个指针进行断言
	assert(dest);
	assert(src);
	//将dest遍历至\0
	while(*dest){
		dest++;
	}
	//将src内容复制在dest之后
	while(*src){
		*dest++ = *src++;
	}
	//在dest后面追加\0
	*dest = ’\0’;
	return ret;
}
//库函数中实现方法
char *my_strcat2(char *dest,const char *src){
	char * cp = dest;
	//将dest遍历至\0
	while(*cp){
		cp++;
	}
	//将src内容复制在dest之后
	while(*cp++=*src++){
		;
	}
	return dest;
}
int main(){
	char str1[20] = "Hello ";
	char str2[] ="Gxd Blog!";
	char *ret = my_strcat1(str1,str2);
	printf("%s\n",ret);
	system("pause");
	return 0;
}

输出

模拟实现strcat函数输出结果

    函数列表
  1. printf()函数功能、原型、用法和实例
  2. assert()宏功能、原型、用法和实例
  3. strcat()函数功能、原型、用法及实例

小调祝你一切安好.

本文由高小调博客原创!

原文地址:http://gaoxiaodiao.com/p/21.html

如欲转载,请注明出处!

C语言::模拟实现strcat函数

标签:

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
站长高小调
加入时间:2016-07-21
  关注此人  发短消息
文章分类
站长高小调”关注的人------(0
站长高小调”的粉丝们------(0
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!