赞
踩
- //my_strcpy_array(char *str);形参自定义,将str数组的内容拷贝一份出来。
- #include<stdio.h>
- #include<stdlib.h>
- #include<assert.h>
- void my_strcpy_array(char *str,char *array,int len)//定义str数组和array数组,array数组存放原先的数据,设str为复制数组,len为数组元素个数
- {
- assert(str != NULL && array != NULL && len >= 0);//数组作为形参退化为指针,断言指针不为空且元素的个数大于等于0
- for(int num = 0;num <= len -1;num++){
- str[num] = array[num];//将array字符数组中的元素拷贝进str数组中
- }
- }
- int main()
- {
- char array [] = "abcdef";//往原先array字符数组中填充数据
- int len = sizeof(array) / sizeof(array[0]);//计算array的字符个数
- char str[7];//定义str数组
- my_strcpy_array(str,array,len);//调用函数进行执行
- printf("str[] = ");
- for(int i = 0;i<len -1;++i){
- printf("%c ",str[i]);//对拷贝完成的str数组进行输出
- }
- return 0;
- }
如图为程序拷贝完成之后的运行结果:
输出完成
使用字符串头文件优化后的代码为:
- //my_strcpy_array(char *str);形参自定义,将str数组的内容拷贝一份出来
- #include<stdio.h>
- #include<string.h>
- #include<assert.h>
- void my_strcpy_array(char *str,char *array)
- {
- assert(str != NULL && array != NULL);
- int len = strlen(array);
- for(int i = 0;i < len;i++){
- str[i] = array[i];
- }
- }
- int main()
- {
- char array[5] = "abcd";
- char str[5];
- my_strcpy_array(str,array);
- printf("%s",str);
- return 0;
- }
取消了长度的形参量,长度可以通过strlen库函数在拷贝函数里面得出并应用。
如图所示为程序运行结果:
输出完成
利用指针:
- #include<stdio.h>
- #include<iostream>
- #include<assert.h>
- void my_strcpy(int *ar,int *br,int begin_index,int m)//形参分别为:被复制的数组ar,新数组br,元素下标,数组元素个数
- {
- assert(ar != nullptr && br != nullptr && begin_index >= 0);
- int *p = ar + begin_index;//p指针的初始位置是被复制数组ar的起始元素;
- int *q = br + begin_index;//q指针的位置也是br数组的起始元素;
- assert(p != nullptr && q != nullptr);
- for(int i = 0;i < m;i++){
- *q = *p;//将p指针对应的地址解引用后的元素赋值给q指针对应地址解引用的元素,循环;
- q++;
- p++;//每次赋值完之后,p指针和q指针的位置向后偏移一位,直到全部复制完成;
- }
- }
- int main()
- {
- int m = 0;//定义整型值m用来存放被复制的数组中一共有几个元素
- printf("Please input the number of array:\n");//输入元素的个数
- scanf("%d",&m);
- int ar[m];
- printf("Please input these numbers.\n");//填充上面个数个元素
- for(int i = 0;i < m;i++){
- scanf("%d",&ar[i]);
- }
- int br[m];
- my_strcpy(ar,br,0,m);//调用函数
- printf("The array you copied br[] is:");
- for(int i = 0;i < m;i++){
- printf("%2d",br[i]);//输出
- }
- return 0;
- }
运行结果为:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。