当前位置:   article > 正文

strcpy函数详解看这一篇就够了-C语言(函数实现、使用用法举例、与strncpy的区别)

strcpy

首先要明确strcpy的功能是:将参数src字符串拷贝至参数dest所指的地址

 

目录

函数介绍

与strncpy的区别

函数实现1:

函数实现2 改进:

用法示例:

函数介绍


函数原型: char*strcpy(char*dest,const char*src)   //将src复制到dest字符数组中
头  文  件:#include <string.h>
返  回  值:char* 类型,返回的是第一个参数的值,即目的数组的首地址;

注 意:
1、strcpy只用于字符串复制,遇到‘\0’时停止,还会复制字符串的结束符'\0'; 所以源字符串必须         以’\0’结束,也会将源字符串的’\0’拷贝到目标空间
2、目标空间必须可变
3、如果参数dest所指的内存空间不够大,可能会造成缓冲溢出的错误情况,在编写程序时需特别       留意,或者用strncpy()来代替

与strncpy的区别

1、strcpy() 函数用来复制字符串;strncpy()用来复制字符串的前n个字符,所以要多传一个参数n

     大家可以对比一下两个函数原型:

    char *strcpy(char *dest, const char *src);

    char * strncpy(char *dest, const char *src, size_t n);

2、不像strcpy(),strncpy()不会向dest追加结束标记'\0'

函数实现1:

  1. char* My_strcpy(char* dest, char* src)
  2. {
  3. char* ret = dest; //将首地址储存,在之后dest后置++运算中,可以方便找到
  4. while (*src != '\0') //复制'\0'前的字符,直到src=\0
  5. {
  6. *dest = *src; //复制
  7. dest++; //目标地址往后+1
  8. src++; //源地址往后+1
  9. }
  10. *dest = *src; //再将结尾的‘\0’复制过去
  11. return ret; //返回目的数组的首地址
  12. }

这样就好了吗?

函数实现2 改进:

我们可以进行以下改进:

1、可以将while中的语句整合一下 

2、引用assert函数来避免:若传过去的是空指针,那么解引用的时候,没有可读取的地址,会出现错误。

3、对比声明,我们还有const char*可以替换

  1. //加上conest使要拷贝的字符数组中存放的字符串不可改变,同时防止拷贝时出现"拷贝反了"的现象
  2. char* My_strcpy(char* dest,const char* src)
  3. {
  4. assert(dest != NULL && src != NULL);
  5. char* ret = dest;
  6. while (*dest++ = *src++)
  7. {
  8. ;
  9. }
  10. *dest = *src;
  11. return ret;
  12. }

用法示例:

  1. #include <stdio.h>
  2. #include<string.h>
  3. #include <assert.h>
  4. char* My_strcpy(char* dest, const char* src)
  5. {
  6. assert(dest != NULL && src != NULL);
  7. char* ret = dest;
  8. while (*dest++ = *src++)
  9. {
  10. ;
  11. }
  12. *dest = *src;
  13. return ret;
  14. }
  15. int main()
  16. {
  17. char arr1[] = "I LOVE YOU";
  18. char arr2[] = "SORRY";
  19. My_strcpy(arr1, arr2);
  20. //经过函数My_strcpy后 ,arr1里应该是arr2里的字符串SORRY
  21. printf("arr1: %s\n", arr1);
  22. return 0;
  23. }

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

闽ICP备14008679号