Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在C/C+中从数组末尾复制数据+;_C++_Pointers - Fatal编程技术网

C++ 如何在C/C+中从数组末尾复制数据+;

C++ 如何在C/C+中从数组末尾复制数据+;,c++,pointers,C++,Pointers,我有一个函数void copy(char*temp,char input[length])。我需要做的是将temp的值复制到输入数组中,但从输入数组的末尾开始 我没有正确地提出这个问题。 这就是我要做的 我已经输入了长度为20的数组。我得到一个值为“test”的临时数组。然后我想复制输入数组中的temp,其中输入[19]=t,输入[18]=e等等 现在,当我再次调用该函数时,如果我想将xyz复制到输入数组,那么输入[15]=x,输入[14]=y,输入[13]=z 我想这样做,直到我用所有的值填充

我有一个函数
void copy(char*temp,char input[length])
。我需要做的是将temp的值复制到输入数组中,但从输入数组的末尾开始

我没有正确地提出这个问题。 这就是我要做的

我已经输入了长度为20的数组。我得到一个值为“test”的临时数组。然后我想复制输入数组中的temp,其中输入[19]=t,输入[18]=e等等

现在,当我再次调用该函数时,如果我想将xyz复制到输入数组,那么输入[15]=x,输入[14]=y,输入[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)

也就是说,
输入
数组的长度不是函数签名的一部分,编译器不会对其进行检查。考虑将大小传递为额外的参数,或者通过引用传递数组。此外,源数组没有被修改,因此它应该是一个
const char*

如果它是一个字符串,您可以使用
strlen
检查输入字符串的大小,然后反向复制它。另一方面,如果它是一个字符数组,而不是以
'\0'
结尾,则必须为长度获取一个新参数

第一种情况(您说
将temp的值复制到输入数组
,因此我们将
temp
的内容复制到
输入
,忽略其名称):

第二种情况:

void copy(char *temp, char *input, size_t length)
{
    for(int i = length - 1; i >= 0; i--)
    {
        input[i] = temp[i];
    }
}

否则,您可以使用标准库函数。

尤其需要一个额外的参数,以便知道数组的长度。或者,如果数组包含以NULL结尾的字符串,则可以使用strlen()获取c字符串的长度。不,这不是家庭作业。我正在尝试从数组的末尾开始存储一个temp变量,并将数据复制到temp数组的长度。从数组的末尾开始,您的意思是说
temp
的内容在
input
中是反向的吗?定义一个适当的函数接口,然后添加一个用例(代码)DavidRodríguez dribeas对输入和输出进行了更多的更改,希望helpsI能够假定输入是数据的来源,而临时数据是目的地。如果没有其他原因,只是因为它被称为输入。是的,这是我的想法,但我只是做了他写的。不管怎样,他只需要再换一次名字…解释了我想做的事。
void copy(char *temp, char *input, size_t length)
{
    for(int i = length - 1; i >= 0; i--)
    {
        input[i] = temp[i];
    }
}