如何在 C/C++ 中从数组末尾开始复制数据
How to copy data starting from end of the array in C/C++
我有一个函数void copy(char *temp,char input[length])
.我需要做的是将 temp 的值复制到输入数组中,但从输入数组的末尾开始。
我没有正确提出问题。这就是我要做的。
我输入了长度为 20 的数组。我得到一个值为"测试"的临时数组。然后我想在输入数组中复制 temp,其中输入 [19]=t,输入 [18]=e 等。
现在当我再次调用该函数时,如果我想将 xyz 复制到输入数组,则输入 [15]=x,input[14]=y,input[13]=z。
我想这样做,直到我用所有值填充输入数组。
void copy(char *temp,char input[])
这是函数定义。
现在让我们看看我们必须做什么,
char* temp={"abcde"};
char input[100]={};
//I want to move data from temp into input array such that
printf("%c",input[95]); // gives output as a
printf("%c",input[96]); // gives output as b
这是我到目前为止写的。
char* copy(char* ptr,char data[])
{
int start=sizeof(data)/sizeof(char)-strlen(data);
int end=start-strlen(ptr);
int j=0;
int counter=0;
for(counter=start;counter>end;counter--)
{
data[counter]=ptr[j++];
}
printf("%s",data);
return data;
}
当我调用这个函数时,我以这种方式得到另一个错误,
char data[100]={};
char* temp={"abcde"};
char* output=copy(temp,data);
data=output;
为数据=输出行将"char*"赋值为"char [100]"时的类型不兼容
这已经作为算法实现:
std::reverse_copy( input, input+length, output );
在相关说明中,函数的签名:
void copy(char *temp,char input[length])
实际上意味着:
void copy(char *temp,char *input)
也就是说,input
数组的长度不是函数签名的一部分,编译器也不会检查它。请考虑将大小作为额外的参数传递,或者通过引用传递数组。此外,源数组没有被修改,所以它应该是一个const char*
如果是字符串,您可以使用strlen
检查输入字符串的大小,然后将其反向复制。另一方面,如果它是一个字符数组,不以 ' '
结尾,您必须为长度采用一个新参数。
第一种情况(你说copy the values of temp into input array
,所以我们把temp
的内容复制到input
,不理会它的名字):
void copy(char *temp, char input[length])
{
for(int i = strlen(temp) - 1; i >= 0; i--)
{
input[i] = temp[i];
}
}
第二种情况:
void copy(char *temp, char *input, size_t length)
{
for(int i = length - 1; i >= 0; i--)
{
input[i] = temp[i];
}
}
否则,您可以使用标准库函数reverse_copy
。
相关文章:
- 将文本文件读取到2D数组中,但数组开始为超过数组[39][]的任何内容输出胡言乱语
- 如何获取由 new 创建的数组的开始和结束
- 重写自定义数组类的运算符/开始/结束
- C 排序无法解析标识符开始和结束吗?(将数组保持在一起)
- 将数组作为函数参数传递,并在其上调用开始/结束方法
- 为什么数组从 0 而不是 1 开始?(C,C++)
- C 指针数组使用STL开始和结束
- 移动数组指针未更改开始的地址
- 如何在 C/C++ 中从数组末尾开始复制数据
- 我正试图使用数组从头开始创建一个strtok函数
- 我应该使用 std::从数组开始吗?
- Netbeans c/c++ 编译器数组从 1 开始,而不是从 0 开始
- C++数组的问题,从函数开始和结束
- 从未知大小的C++开始,动态分配内存以更改数组大小
- 如何为字符串分配一个从数组中间开始的char数组
- 当参数是数组时,C++如何开始和结束工作
- 动态数组的Do实现在开始时保留空间,以备准备
- 为什么数组索引从"0"开始
- 如何编写一个c++数组打印循环,每次迭代从不同的点开始
- 开始和结束函数用于内置数组类型