gpt4 book ai didi

c - 将数字输入动态数组

转载 作者:行者123 更新时间:2023-11-30 15:13:53 25 4
gpt4 key购买 nike

我希望我的程序使用户输入数字到动态数组中,如果用户输入-1,它将停止要求更多数字。这里的问题可能是我当时的情况,这就是我怀疑的地方。

int i=0, size=0;
float *v;
printf("Write a group of real numbers. Write -1 if you want to stop writing numbers\n");
v=(float*)malloc(size*sizeof(float));
while(v!=-1)
{

printf("Write a number\n");
scanf("%f", &v[i]);
i++;
size++;
v=realloc(v, (size)*sizeof(float));

}

最佳答案

size=0; 以 0 长度数组开头,您可以使用 scanf("%f", &v[ 写入越界 i]); 在增加 size 之前。每次迭代都会发生相同的越界写入。我这样重写。请注意,没有初始的 malloc,因为当给定 NULL 指针时,realloc 将起作用。

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int size = 0, i;
float *v = NULL;
float val;
printf("Write a group of real numbers. Write -1 if you want to stop writing numbers\n");
printf("Write a number\n");
while(scanf("%f", &val) == 1 && val != -1)
{
v = realloc(v, (size+1) * sizeof(float));
v[size++] = val;
printf("Write a number\n");
}

printf("Results\n");
for(i=0; i<size; i++)
printf("%f\n", v[i]);
free(v);
return 0;
}

节目环节:

Write a group of real numbers. Write -1 if you want to stop writing numbers
Write a number
1
Write a number
2
Write a number
3
Write a number
-1
Results
1.000000
2.000000
3.000000

关于c - 将数字输入动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34254566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com