当前位置:   article > 正文

C语言 - 将一个数组中的内容复制到另外一个数组_c数组复制到另一个数组

c数组复制到另一个数组
  1. //my_strcpy_array(char *str);形参自定义,将str数组的内容拷贝一份出来。
  2. #include<stdio.h>
  3. #include<stdlib.h>
  4. #include<assert.h>
  5. void my_strcpy_array(char *str,char *array,int len)//定义str数组和array数组,array数组存放原先的数据,设str为复制数组,len为数组元素个数
  6. {
  7. assert(str != NULL && array != NULL && len >= 0);//数组作为形参退化为指针,断言指针不为空且元素的个数大于等于0
  8. for(int num = 0;num <= len -1;num++){
  9. str[num] = array[num];//将array字符数组中的元素拷贝进str数组中
  10. }
  11. }
  12. int main()
  13. {
  14. char array [] = "abcdef";//往原先array字符数组中填充数据
  15. int len = sizeof(array) / sizeof(array[0]);//计算array的字符个数
  16. char str[7];//定义str数组
  17. my_strcpy_array(str,array,len);//调用函数进行执行
  18. printf("str[] = ");
  19. for(int i = 0;i<len -1;++i){
  20. printf("%c ",str[i]);//对拷贝完成的str数组进行输出
  21. }
  22. return 0;
  23. }

如图为程序拷贝完成之后的运行结果:

输出完成 

使用字符串头文件优化后的代码为:

  1. //my_strcpy_array(char *str);形参自定义,将str数组的内容拷贝一份出来
  2. #include<stdio.h>
  3. #include<string.h>
  4. #include<assert.h>
  5. void my_strcpy_array(char *str,char *array)
  6. {
  7. assert(str != NULL && array != NULL);
  8. int len = strlen(array);
  9. for(int i = 0;i < len;i++){
  10. str[i] = array[i];
  11. }
  12. }
  13. int main()
  14. {
  15. char array[5] = "abcd";
  16. char str[5];
  17. my_strcpy_array(str,array);
  18. printf("%s",str);
  19. return 0;
  20. }

取消了长度的形参量,长度可以通过strlen库函数在拷贝函数里面得出并应用。

如图所示为程序运行结果:


​​​​​​​

输出完成 

利用指针:

  1. #include<stdio.h>
  2. #include<iostream>
  3. #include<assert.h>
  4. void my_strcpy(int *ar,int *br,int begin_index,int m)//形参分别为:被复制的数组ar,新数组br,元素下标,数组元素个数
  5. {
  6. assert(ar != nullptr && br != nullptr && begin_index >= 0);
  7. int *p = ar + begin_index;//p指针的初始位置是被复制数组ar的起始元素;
  8. int *q = br + begin_index;//q指针的位置也是br数组的起始元素;
  9. assert(p != nullptr && q != nullptr);
  10. for(int i = 0;i < m;i++){
  11. *q = *p;//将p指针对应的地址解引用后的元素赋值给q指针对应地址解引用的元素,循环;
  12. q++;
  13. p++;//每次赋值完之后,p指针和q指针的位置向后偏移一位,直到全部复制完成;
  14. }
  15. }
  16. int main()
  17. {
  18. int m = 0;//定义整型值m用来存放被复制的数组中一共有几个元素
  19. printf("Please input the number of array:\n");//输入元素的个数
  20. scanf("%d",&m);
  21. int ar[m];
  22. printf("Please input these numbers.\n");//填充上面个数个元素
  23. for(int i = 0;i < m;i++){
  24. scanf("%d",&ar[i]);
  25. }
  26. int br[m];
  27. my_strcpy(ar,br,0,m);//调用函数
  28. printf("The array you copied br[] is:");
  29. for(int i = 0;i < m;i++){
  30. printf("%2d",br[i]);//输出
  31. }
  32. return 0;
  33. }

运行结果为:

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

闽ICP备14008679号