当前位置:   article > 正文

C语言—strcpy,strncpy函数介绍、以及自己实现字符串的拷贝代码演示_strcpy返回值

strcpy返回值

目录

一、strcpy函数介绍

二、与strncpy的区别

三 、 实现自己的strcpy

代码演示:

四、实现自己的strncpy

代码演示


一、strcpy函数介绍

函数原型: 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'


————————————————
版权声明:本文为CSDN博主「lambo mercy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_65601072/article/details/123967796

三 、 实现自己的strcpy

代码演示:

  1. #include<stdio.h>
  2. #include<string.h>
  3. char* mystrcpy(char *data,char *data2) //第一种,实现字符串拷贝
  4. {
  5. if(data == NULL || data2 == NULL){
  6. return NULL;
  7. }
  8. char *p = data;
  9. while(*data2 != '\0'){ //!!!!! while(p != '\0'){ 逻辑错误!!!!!
  10. *p = *data2;
  11. p+1;
  12. data2+1;
  13. }
  14. *p = '\0';
  15. return data;
  16. }
  17. char* mystrcpy2(char *data,char *data2)
  18. {
  19. if(data == NULL || data2 == NULL){
  20. return NULL;
  21. }
  22. char *p = data;
  23. while(*data2 != '\0'){
  24. *p++ = *data2++;
  25. }
  26. *p = '\0';
  27. return data;
  28. }
  29. char* mystrcpy3(char *data,char *data2)
  30. {
  31. if(data == NULL || data2 == NULL){
  32. return NULL;
  33. }
  34. char *p = data;
  35. while( (*p++ = *data2++) != '\0') //记住这种写法while( (*p++ = *data2++)
  36. *p = '\0';
  37. return data;
  38. }
  39. int main()
  40. {
  41. char arr[128] = {'\0'};
  42. char *p = "yyds666666888";
  43. //mystrcpy (arr,p);//第一种写法,实现字符串拷贝
  44. // mystrcpy2(arr,p);//第二种,实现字符串拷贝
  45. mystrcpy3(arr,p);//第三种,实现字符串拷贝
  46. //strcpy(arr,p);
  47. printf("arr %s",arr);
  48. return 0;
  49. }//7.6字符串的拷贝

运行结果:

arr yyds666666888

四、实现自己的strncpy

代码演示

  1. #include<stdio.h>
  2. #include<string.h>
  3. char* mystrcpy4(char *data,char *data2,int number)
  4. {
  5. if(data == NULL || data2 == NULL){ //先判断data是否是野指针,如果是野指针下面的执行copy字符串毫无意义
  6. return NULL;
  7. }
  8. char *p = data; //先保存一个字符串数组arr地址,对进行copy偏移操作,
  9. //mystrcpy4函数中形式参数char *data,保存的是arr起始地址,不要动,
  10. //结束copy的操作时候需要返回arr的开头地址
  11. while(*data2 != '\0' && number>0){
  12. *p++ = *data2++;
  13. number--;
  14. }
  15. /* while(*data2 != '\0'){
  16. if(number == 0){
  17. break;
  18. }
  19. *p++ = *data2++;
  20. number--;
  21. }
  22. */
  23. if(number>0){
  24. while(number>0){
  25. *p++ = '\0';
  26. number--;
  27. }
  28. return data;
  29. }
  30. *p = '\0';
  31. return data;
  32. }
  33. int main()
  34. {
  35. char arr[128] = {'\0'};
  36. char *p = "yyds666666888";
  37. mystrcpy4(arr,p,4); //把字符串p的内容,拷贝到arr ,并且拷贝四个
  38. //strcpy(arr,p);
  39. printf("arr %s",arr);
  40. return 0;
  41. }//7.6字符串的拷贝

运行结果:

arr yyds

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

闽ICP备14008679号