gpt4 book ai didi

c++ - 如何在C/C++中从数组末尾开始复制数据

转载 作者:行者123 更新时间:2023-11-28 07:56:32 31 4
gpt4 key购买 nike

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

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

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

现在当我再次调用该函数时,如果我想将 xyz 复制到输入数组,则 input[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*

关于c++ - 如何在C/C++中从数组末尾开始复制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12588995/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com