用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语言的拷贝函数且将复制后的字符串逆序,不能使用库函数,不能定义其他的变量。
- 实现C语言的拷贝函数且将复制后的字符串逆序,不能使用库函数,不能定义其他的变量。
- C语言实现求字符串的长度,不使用库函数
- 不使用库函数实现字符串像浮点数转换
- 使用C语言实现字符串中子字符串的替换
- C语言 编写程序实现字符串比较,不允许使用strcmp函数。
- 不使用库函数实现字符串处理函数
- 不用库函数,用C语言实现将一整型数字转化为字符串
- 不使用库函数实现字符串拷贝函数strcpy写法
- 实现C语言字符串操作的库函数
- 【C语言】编写一个函数reverse_string(char * string)(递归实现),将参数字符串中的字符反向排列,不能使用C函数库中的字符串操作函数。
- 【C语言】编写一个函数reverse_string(char * string) 实现:将参数字符串中的字符反向排列。要求:不能使用C函数库中的字符串操作函数。
- c语言:模拟实现库函数的atoi函数,将字符串转换成整数
- 字符串拷贝函数递归与非递归的C语言实现
- c语言使用指针实现模拟java/c# string.concat字符串串联方法
- 不使用库函数将字符串转化为数字 实现
- 使用C语言实现字符串中子字符串的替换
- 不使用库函数,实现字符串操作源码
- C语言中的字符串拷贝函数strcpy和内存拷贝函数memcpy的区别与实现
- 将一个字符串逆序(用递归实现不能使用库函数)