C 如何将一个元素移动到固定数组的左侧

C 如何将一个元素移动到固定数组的左侧,c,C,根据我的理解,其余未赋值的索引将为0。如果我想向左移动每个元素(我想删除第一个值,即索引0)。我如何做到这一点,而不会导致最后一个分配了整数的索引出现重复值 例如: 电流阵列 int array[10] = {1,2,3,4,5} +左1: output: 1234500000 我尝试了以下代码: output: 2345500000 还有,在有人说这是一个重复之前,我环顾四周,没有线程使用固定数组进行解释,即使用0作为默认值 感谢您的回复 output: 2345000000 我不明

根据我的理解,其余未赋值的索引将为0。如果我想向左移动每个元素(我想删除第一个值,即索引0)。我如何做到这一点,而不会导致最后一个分配了整数的索引出现重复值

例如:

电流阵列

int array[10] = {1,2,3,4,5}

+左1:

output: 1234500000
我尝试了以下代码:

output: 2345500000
还有,在有人说这是一个重复之前,我环顾四周,没有线程使用固定数组进行解释,即使用0作为默认值

感谢您的回复

output: 2345000000
我不明白为什么这个街区在那里。不可能进入if语句内部

对于预期的输出,并且假设这是一个
int
s数组,我怀疑解决方案是在print语句中只输出四个值,但如果数组的最后一个元素应为零,则可以在
for
循环后执行此操作:

    if (array[i] == 0)
    {
        array[i-1] = 0;
    }

如果不希望旋转,则:

intput: 1234500000
output: 2345000000
int-arr[]//初始化它
int siz=sizeof(arr)/sizeof(arr[0]);
int指数=0;

(index < p>您只需要手动将最后一个值设置为0,我也会考虑使用内置的<代码> MeMeTest< /Case>函数,该函数用于围绕源和目的地重叠的数据移动。

int arr[];  //initialize it
int siz=sizeof(arr)/sizeof(arr[0]);
int index=0; 

while(index<siz-1)
{
    arr[index]=arr[index+1];
    index++;
}

arr[index]=0;  //0 default value at the end of the array

你不想在旋转后将
1
放在
5
的旧位置吗?不,基本上程序使用另一个变量的第一个索引,数组需要像队列一样向左移动+1。如果你调用
order_数组(5,数组)
for
int数组[10]={1,2,3,4,5,6,7,8,9,10},你想要什么结果
?感谢您的回复。我尝试了该代码,因为5没有被下一个0替换,它只是两个5。这是我不想要的。我想要234500000,因此如果没有两个5,我已经修改了答案,如果您想要234500000,请在找到默认0时不要执行任何操作。
#include <stdio.h>

#define ARRAY_SIZE 10

void order_array(int size, int* array) {
    for (int i = 0; i < size; i++) {

        if (!array[i]) {
            continue;
        }

        if (i + 1 < size)
            array[i] = array[i + 1];
    }
}

int main() {
    int array[ARRAY_SIZE] = {1, 2, 3, 4, 5};
    printf("intput: ");
    for (int i = 0; i < ARRAY_SIZE; i++) {
        printf("%d", array[i]);
    }
    printf("\n");

    order_array(ARRAY_SIZE, array);

    printf("output: ");
    for (int i = 0; i < ARRAY_SIZE; i++) {
        printf("%d", array[i]);
    }
    printf("\n");

    return 0;
}
intput: 1234500000
output: 2345000000
int arr[];  //initialize it
int siz=sizeof(arr)/sizeof(arr[0]);
int index=0; 

while(index<siz-1)
{
    arr[index]=arr[index+1];
    index++;
}

arr[index]=0;  //0 default value at the end of the array
void order_array(int size, int array[]){
    memmove(array, array+1, (size-1) * sizeof(array[0]));
    array[size-1] = 0;
}