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;
}