gpt4 book ai didi

C : Increase Dynamic Array by one in a loop

转载 作者:行者123 更新时间:2023-11-30 17:42:38 25 4
gpt4 key购买 nike

我想知道为什么我无法在 while 循环中仅将数组大小增加一个。这是我的代码:

void pb_memory(void){
printf("ERROR : memory problem !\n");
system("PAUSE");
exit(EXIT_FAILURE);
}

int main(int argc, char *argv[])
{
int length = 0;
/*allocate memory and check for no error*/
int *array = calloc(1, sizeof(int)); /*initialize to 0*/
if(array == NULL)
pb_memory();

/*Check for valid inputs and put into array*/
while((scanf("%d", &num)) != EOF){
array[length]=num;
length++;
array = realloc(array, length*sizeof(int));
if(array == NULL)
pb_memory();
}
.
.
.
.

}

为什么这不起作用?它失败并直接进入 pb_memory() 函数。我希望每次长度增加一时我的数组也这样做......

感谢您的帮助。

编辑:抱歉,我想让代码保持简单并专注于我的问题,这就是为什么我没有编写所有变量。不管怎样,我正在为下次学习,感谢@Michael 和所有参与的人。

最佳答案

您正在尝试访问错误的索引array[length]=num;,如果数组的大小为length,则无法访问length-第一个元素。

您必须在重新分配后移动写入:

/*Check for valid inputs and put into array*/
while((scanf("%d", &num)) != EOF){
length++;
array = realloc(array, length*sizeof(int));
if(array == NULL)
pb_memory();
array[length-1]=num;
}

关于C : Increase Dynamic Array by one in a loop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20471661/

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