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的数组,并写入到末尾。未定义的行为。(请提供准确的输入、输出和预期输出)