我正在尝试创建一个数组,其大小取决于输入元素的数量。之后我想打印它,但我得到了非常奇怪的输出。
int main(void)
{
int input_arr;
int i,size=0;
int arr[size];
while(input_arr!=-1){
printf("enter positive int");
scanf("%d",&input_arr);
arr[size]=input_arr;
printf("%d",arr[size]);
for(i=0;arr[i]!='\0';i++){
printf("%d ",arr[i]);
}
size+=1;
}
return 0;
}
33 3 3 3 3 3 6487488 enter positive int3.
它给出这样的输出,一段时间后它停止获取元素。我无法识别我哪里做错了。
最佳答案
在 C 中,数组的大小在您定义它的那一刻就固定了。增加 size
变量不会增加数组大小。因此,当您读取第一个元素时,您会立即得到缓冲区溢出。您可以像这样声明一个大数组:
static const int maxSize = 4096;
int arr[maxSize];
int main(void)
{
int i, size=0;
while(size < maxSize){
printf("enter positive int");
scanf("%d", &arr[size]);
++size;
for(i=0; i < size; i++){
printf("%d ",arr[i]);
}
printf("\n");
}
return 0;
}
或者,您可以使用 malloc
和 realloc
动态增长数组。
关于c - 向数组添加元素并打印它们时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55752656/