Arrays 如何在C中将一个数组复制到另一个数组并获得两个单独的数组?
我需要将一个数组复制到另一个数组,然后在不影响原始数组的情况下更改复制的数组。 我试过:Arrays 如何在C中将一个数组复制到另一个数组并获得两个单独的数组?,arrays,c,copy,Arrays,C,Copy,我需要将一个数组复制到另一个数组,然后在不影响原始数组的情况下更改复制的数组。 我试过: memcpy(statesfactor,分母因子,n*sizeof(int)) 和 memmove(statesVector,分母因子,n*sizeof(int)) 但当我将statesVector乘以-1时,分母因子也会相乘。 我觉得,我不明白简单的事情 编辑: int n=0; int分母因子[n]; int statesVector[n]; scanf(“%d”和“&n”); memmove(sta
memcpy(statesfactor,分母因子,n*sizeof(int))代码>
和
memmove(statesVector,分母因子,n*sizeof(int))代码>
但当我将statesVector乘以-1时,分母因子也会相乘。
我觉得,我不明白简单的事情
编辑:
int n=0;
int分母因子[n];
int statesVector[n];
scanf(“%d”和“&n”);
memmove(statesVector,分母因子,n*sizeof(int))//或
//memcpy(状态因子,分母因子,n*sizeof(int));
对于(int i=0;i您不能将数组的大小初始化为0(int n=0;int denominorfactors[n])
在读取大小之后而不是之前声明数组
#include<stdio.h>
int main(void)
{
int size;
do
{
printf("Give the size of your array :");
scanf("%d",&size);
}while(size <1);
int statesVector[size];
int denominatorFactors[size];
for(int i = 0; i<size;i++)
{
printf("Give me the %d elment :",i);
scanf("%d",&statesVector[i]);
denominatorFactors[i] = statesVector[i];
}
printf("\n\nDisplay of the original array :\n\n");
for(int i = 0; i<size;i++)
{
printf("[%d]\t",statesVector[i]);
}
printf("\n\nDisplay of the copy of array :\n\n");
for(int i = 0; i<size;i++)
{
denominatorFactors[i]*=-1;
printf("[%d]\t",denominatorFactors[i]);
}
printf("\n");
return 0;
}
#包括
内部主(空)
{
整数大小;
做
{
printf(“给出数组的大小:”);
scanf(“%d”,大小(&S);
}while(size)请发布一个。你确定你分配了2个数组而不是像int statesVactor[n];int*DenominorFactors=StatesFactor;
?我添加了更多的代码。我希望它更好。我真的不确定我在做什么。我一直使用Java,这是我在C中的第一个项目,所有东西都…不同。我想我做了你建议我不应该做的事情。分配零元素数组,如int n=0;int DenominorFactors[n];
是不允许的。数组的元素数必须大于零。(参考:6.7.6.2数组声明符第5段)你说得对,我的错。忘记添加scanf(“%d”,&n);读取n
必须在数组声明之前。此外,statesVector
的元素应在循环之前初始化,未定义的行为将使用未初始化的非静态局部变量的值调用,这些值是不确定的。
#include<stdio.h>
int main(void)
{
int size;
do
{
printf("Give the size of your array :");
scanf("%d",&size);
}while(size <1);
int statesVector[size];
int denominatorFactors[size];
for(int i = 0; i<size;i++)
{
printf("Give me the %d elment :",i);
scanf("%d",&statesVector[i]);
denominatorFactors[i] = statesVector[i];
}
printf("\n\nDisplay of the original array :\n\n");
for(int i = 0; i<size;i++)
{
printf("[%d]\t",statesVector[i]);
}
printf("\n\nDisplay of the copy of array :\n\n");
for(int i = 0; i<size;i++)
{
denominatorFactors[i]*=-1;
printf("[%d]\t",denominatorFactors[i]);
}
printf("\n");
return 0;
}