【发布时间】:2019-04-18 19:32:52
【问题描述】:
我正在尝试创建一个大小取决于输入元素计数的数组。之后我想打印它,但我得到了非常奇怪的输出。
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.
它会给出这样的输出,过了一会儿它会停止获取元素。我不知道我在哪里做错了。
【问题讨论】:
-
你声明了一个大小为0的数组。我更像是一个c ++人,但我认为你的数组大小在你声明它时是固定的,当大小为0时。(大概你输入UB当你开始写到结尾时)
-
你是对的,但它并没有解决我的问题。现在我在放置第一个元素后得到类似 4202816 1 37 的输出。也许指针可以帮助我,但首先我想知道为什么这不起作用以及我该如何解决它。
-
你想要的输出是什么?你想达到什么目的?
-
这段代码仍然显示你声明一个大小为 0 的数组并写到末尾。未定义的行为。 (请提供准确的输入、输出和预期输出)