gpt4 book ai didi

c - 如何在运行时增加数组大小以避免最后出现垃圾值

转载 作者:行者123 更新时间:2023-11-30 15:04:48 26 4
gpt4 key购买 nike

这里我正在使用一个代码,它将一次计算数组中存在的“1”的数量。比如说,我的数组是

int arr[12] = {0,1,1,0,0,1,1,1,1,0,0,1};

Number of "1" present at a time are (2,4,1)

我想将结果存储在一个名为store的数组中。由于顺序可能会有所不同,一开始我不知道必须声明多大的数组来存储它们。最糟糕的是情况下可能会有一个如下所示的数组:

int arr[12]={0,1,0,1,0,1,0,1,0,1,0,1};

所以我动态分配了一个实际数组大小一半的数组来存储最坏的情况。但如果不是最坏的情况,我会在存储数组的末尾得到垃圾值。我想知道如何动态增加数组大小在运行时这样我就不需要处理任何垃圾值

#include<stdio.h>
#include<stdlib.h>

int main(){

int arr[12] = {0,1,1,0,0,1,1,1,1,0,0,1};
int size = sizeof(arr)/sizeof(arr[0]);

int *store =(int *)malloc((size/2)*sizeof(int));

int i=0,j=0,count=0;
while(arr[i]<size){
while(arr[i]==0 && arr[i]<size){
i++;
}
if(i==size){
break;
}
while(arr[i]==1){
i++;
count++;
}
store[j]=count;
j++;
count=0;
}
for(i=0;i<size/2;i++){

printf("%d ",store[i]);
}

}

最佳答案

使用realloc

//size2 has the size of the new array to be stored
store = realloc(store, size2 * sizeof int);

if (store == NULL)
{
// Reallocation failed -- Take appropriate action
printf ("Reallocation failed");
exit(1);
}

关于c - 如何在运行时增加数组大小以避免最后出现垃圾值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40145588/

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