当前位置:   article > 正文

自己实现C语言strcpy函数_用自己的代码实现strcpy功能

用自己的代码实现strcpy功能

方式一: 使用for循环

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. char* Mystrcpy(char *str1,char *str2){
  5. if(str1==NULL || str2==NULL){
  6. printf("str1是野指针或者str2是野指针");
  7. exit(-1);
  8. }
  9. char *demo=str1;
  10. for(int i=0;i<strlen(str2);i++){
  11. *(str1+i)=*(str2+i);
  12. }
  13. return demo;
  14. }
  15. int main(){
  16. char *str1;
  17. char *str2="happy";
  18. str1= (char*)malloc(sizeof(char)*10);
  19. Mystrcpy(str1,str2);
  20. printf("str1=%s \n",str1);
  21. return 0;
  22. }

方式二:使用while循环

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. char* Mystrcpy(char *str1,char *str2){
  4. if(str1==NULL || str2==NULL){
  5. printf("传递的数据中有野指针");
  6. exit(-1);
  7. }
  8. char *demo=str1;
  9. while(*str2!='\0'){
  10. *str1=*str2;
  11. str1++;
  12. str2++;
  13. }
  14. *str1='\0';
  15. return demo;
  16. }
  17. int main(){
  18. char *str1;
  19. char *str2="happy";
  20. str1 = (char*)malloc(sizeof(char)*10);
  21. Mystrcpy(str1,str2);
  22. printf("str1=%s\n",str1);
  23. return 0;
  24. }

 方式三:在方式二上进行改进

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. char* Mystrcpy(char *str1,char *str2){
  4. if(str1==NULL || str2==NULL){
  5. printf("传递的数据中有野指针");
  6. exit(-1);
  7. }
  8. char *demo=str1;
  9. while(*str2!='\0'){
  10. *str1++=*str2++;
  11. }
  12. *str1='\0';
  13. return demo;
  14. }
  15. int main(){
  16. char *str1;
  17. char *str2="happy";
  18. str1 = (char*)malloc(sizeof(char)*10);
  19. Mystrcpy(str1,str2);
  20. printf("str1=%s\n",str1);
  21. return 0;
  22. }

方法四:在方法三的基础上再次该进

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. char* Mystrcpy(char *str1,char *str2){
  4. if(str1==NULL || str2==NULL){
  5. printf("传递的数据中有野指针");
  6. exit(-1);
  7. }
  8. char *demo=str1;
  9. while((*str1++=*str2++)!='\0');
  10. *str1='\0';
  11. return demo;
  12. }
  13. int main(){
  14. char *str1;
  15. char *str2="happy";
  16. str1 = (char*)malloc(sizeof(char)*10);
  17. Mystrcpy(str1,str2);
  18. printf("str1=%s\n",str1);
  19. return 0;
  20. }

这里顺带实现一下strncpy函数

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. char* Mystrncpy(char *str1,char *str2,int n){
  4. if(str1==NULL || str2==NULL){
  5. printf("传递的数据中有野指针");
  6. exit(-1);
  7. }
  8. if(n>sizeof(str2)){
  9. printf("你需要复制的字符串长度超出了被复制的字符串长度");
  10. exit(-1);
  11. }
  12. char *demo=str1;
  13. int i=0;
  14. while(i<n){
  15. *str1++=*str2++;
  16. i++;
  17. }
  18. *str1='\0';
  19. return demo;
  20. }
  21. int main(){
  22. char *str1;
  23. char *str2="happy";
  24. str1 = (char*)malloc(sizeof(char)*10);
  25. int n=3;
  26. Mystrncpy(str1,str2,n);
  27. printf("str1=%s\n",str1);
  28. return 0;
  29. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/388265
推荐阅读
相关标签
  

闽ICP备14008679号