【发布时间】:2015-09-16 21:55:04
【问题描述】:
我需要根据用户输入增加 2 个数组的长度。我正在使用下面的代码。但输出与用户输入不匹配。
#include<stdio.h>
int main()
{
int i=0, key=0, size[key], time[key];
while (key!=-1)
{
printf("Insert value for size : ");
scanf("%d",&size[i]);
printf("Insert value for time : ");
scanf("%d",&time[i]);
i++;
printf("Run again Press-1 or Exit : ");
scanf("%d",&key);
}
int x=0;
for (x ; x<i ; x++)
{
printf("%d %d\n",size[x],time[x]);
}
return 0;
}
当用户输入值时:
35 4
20 3
40 1
60 7
20 8
那么这是输出:
8 4
20 3
40 1
60 7
20 8
如果数组长度超过 4,time 数组的最后一个元素将作为size 数组的第一个元素打印。
为什么我的程序会给出这个输出?
【问题讨论】:
-
不是这样的。如果要分配可调整大小的数组,请查找
realloc()。 -
您认为代码的哪一部分定义了这些数组的初始大小,该大小是多少?你认为哪个部分改变了这个尺寸?
-
此外,size[key] 和 time[key] 在 key 为零时声明,这意味着数组中没有可用的项目,它的大小为零。我希望你的程序崩溃
-
如何使用 realloc() 函数?
-
您使用
realloc来更改malloc或calloc分配的内存大小。
标签: c arrays dynamic-arrays