C 将元素添加到数组并打印时遇到问题

C 将元素添加到数组并打印时遇到问题,c,arrays,printing,C,Arrays,Printing,我试图创建一个数组,它的大小取决于输入元素的数量。之后,我想打印它,但我得到了非常奇怪的输出 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;

我试图创建一个数组,它的大小取决于输入元素的数量。之后,我想打印它,但我得到了非常奇怪的输出

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 6487488输入正整数。


它给出这样的输出,一段时间后它停止获取元素。我不知道我哪里做错了。

在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;
}
static const int maxSize=4096;
int-arr[maxSize];
内部主(空)
{
int i,大小=0;
while(大小<最大大小){
printf(“输入正整数”);
scanf(“%d”和&arr[size]);
++大小;
对于(i=0;i

或者,您可以使用
malloc
realloc
动态增长数组。

您声明了大小为0的数组。我是一个C++的人,但是我认为你的数组大小在你声明它时是固定的,当大小是0时。(假设你在结束后开始写作时输入UB)你是对的,但这并没有解决我的问题。现在,在我放置第一个元素之后,我得到了4202816 1 37这样的输出。也许指针可以帮助我,但首先我想知道为什么这不起作用,我如何修复它。你想要的输出是什么?您试图实现什么?这段代码仍然显示您声明了一个大小为0的数组,并写入到末尾。未定义的行为。(请提供准确的输入、输出和预期输出)