当前位置:   article > 正文

C语言的字符串复制

字符串复制

提示:仅供参考,如有错误,还望指出。


目录

目录

一、字符串复制

二、一些优化

1.一次简单优化

2.二次优化

3.三次优化

4.四次优化

5.最后的优化

总结


前言

以下是对字符串复制的一些优化

一、字符串复制

 这是自己能想到的方法

主要思想:通过两个指针,对二者进行遍历,若该被复制的字符不为‘\0’来进行一一复制。

可是这样‘\0’字符就无法复制,而此时被复制字符的地址刚好又是‘\0’,再进行一次复制就好。

  1. //我的字符串复制
  2. void my_strcpy(char* dest,char* rsc)
  3. {
  4. while (*rsc != '\0')
  5. {
  6. *dest = *rsc;
  7. dest++;
  8. rsc++;
  9. }
  10. *dest = *rsc;
  11. }

二、一些优化

注:这些优化都是基于前一次的优化,也体现出一个循序渐进的过程

1.一次简单优化

这里实现了一小点的优化,也就是将三句语句合成一句

  1. void my_strcpy(char* dest, char* rsc)
  2. {
  3. while (*rsc != '\0')
  4. {
  5. *dest++ = *rsc++;
  6. }
  7. *dest = *rsc;
  8. }

2.二次优化

这里实现了我们既可以赋值字符也能够复制'\0'

由于当被复制的字符为‘\0’时,也得到了复制,同时还跳出了循环

  1. void my_strcpy(char* dest, char* rsc)
  2. {
  3. while (*dest++ = *rsc++)
  4. {
  5. ;
  6. }
  7. }

3.三次优化

这里优化了健壮性,可这里没有体现出问题在哪。

在二次优化中,添加了一个判断语句,只有二者同时不为空指针时,才会进入遍历复制的过程。

  1. void my_strcpy(char* dest, char* rsc)
  2. {
  3. if (dest != NULL && rsc != NULL)
  4. {
  5. while (*dest++ = *rsc++)
  6. {
  7. ;
  8. }
  9. }
  10. }

4.四次优化

这里用到了断言函数assert();同时需要添加<assert.h>该头文件

使用assert()函数,若不满足函数体中条件,就会报错,并且具体体现在哪一行,更有利于找错。

  1. #include<assert.h>
  2. my_strcpy(char* dest, char* rsc)
  3. {
  4. assert(dest != NULL);
  5. assert(rsc != NULL);
  6. while (*dest++ = *rsc++)
  7. {
  8. ;
  9. }
  10. }

5.最后的优化

这个就比较细节,也是为了防止一些错误而形成的优化。

在被复制字符中加上一个const,为了防止while循环中的条件,若不注意将二者位置调换,就会出现报错的情况。

这里也给大家推荐一个网站cplusplus.com - The C++ Resources Network 

若有不懂的函数或者函数需要的头文件都可以在这里查。         这里也到了strcpy函数中参数的类型,若以后要写类似于库函数的函数也可以考虑这里面的参数类型。

  1. #include<assert.h>
  2. void my_strcpy(char* dest, const char* rsc)
  3. {
  4. assert(dest != NULL);
  5. assert(rsc != NULL);
  6. while (*dest++ = *rsc++)
  7. {
  8. ;
  9. }
  10. }

总结

       在我看来,编程很像数学,每当你了解到一个题目的多种解法后,有些解法会给人一种十分奇妙的感觉,也有一种勾起好奇心的感觉,就是由于这种好奇心,促使这我们成长。不过有时候的编程也很乏味,但是我们一定要坚持。

学习不易,如果这篇对你有帮助,足矣。

最后附上学习的链接(同样要是有一起学习的伙伴就更好了)

25.VS环境-C语言实用调试技巧(2)(C语言程序设计教程谭浩强 c语言谭浩强视频教程 c语言零基础入门教程 学习c语言 c语言视频教程 c语音 C语言教程_哔哩哔哩_bilibili

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/563071
推荐阅读
相关标签
  

闽ICP备14008679号