您的位置:首页 > 编程语言 > C语言/C++

用c语言实现字符串的拷贝函数(不使用库函数)

2016-11-05 08:06 316 查看
第一种方法(未优化的):

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<assert.h>

void MyStr_copy(char *dest,char *src)
{
/*使用指针时一定要判断指针是否为空
所以使用assert(断言)来判断*/
assert(dest != NULL);
assert(src !=NULL);

/*当src数组中的字符串不是'\0'时,
就将src字符串拷贝到dest数组中*/
while (*src != '\0')
{
*dest = *src;
dest++;
src++;
}
*dest = '\0';//拷贝时没有把'\0'拷贝过去,所以需要加上'\0'
}

int main()
{
char dest[] = {0};
char src[] = "hello";
MyStr_copy(dest, src);
printf("%s\n",dest);
system("pause");
return 0;
}




第二种方法(优化后的):

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<assert.h>

//返回值类型为char *是为了实现链式访问
char* MyStr_copy(char *dest,char *src)
{
char *ret = dest;
/*使用指针时一定要判断指针是否为空
所以使用assert(断言)来判断*/
assert(dest != NULL);
assert(src !=NULL);
/*将src字符数组中的字符拷贝到dest中,
当src指向'\0'时,src将'\0'赋给dest后
循环条件为假了,此时循环结束*/
while (*dest++ = *src++)
{
;
}
/*这里要返回指向字符数组首元素的指针,
而dest现在指向数组的最后一个元素*/
return ret;
}

int main()
{
char dest[] = {0};
char src[] = "hello";
printf("%s\n",MyStr_copy(dest, src) );
system("pause");
return 0;
}
很明显,第二种方法看起来要比第一种方法简练很多,第二种方法函数内部只有几个语句,让人看起来有眼前一亮的感觉
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 字符串
相关文章推荐