代码不会产生编译器错误,但如果用户输入Y
,我会尝试在每次循环后更新内存分配,并增加内存的大小。但是在第一个 while 循环之后,当我尝试使用第一个 for 循环打印数字列表时,它只会显示一个数字,即 0.00000
。我无法更新它(这就是我在第二个 if 循环中尝试做的事情)。如有任何帮助,我们将不胜感激。
#include<stdio.h>
#include<stdlib.h>
int main()
{
double *userNum = (double*)malloc(sizeof(double));
double sum = 0;
char userChar = 'Y';
int i = 0;
int j = 0;
if (userNum == NULL) {
printf("Error with memory");
return 1;
}
while (userChar == 'Y' || userChar == 'y') {
printf("Enter a number\n");
scanf("%lf", userNum);
printf("List of numbers:\n");
for (j; j < (i + 1); j++) {
printf( "%lf\n", userNum[j]);
}
printf("More numbers (Y/N)? \n");
getchar();
scanf("%c", &userChar);
if (userChar == 'Y' || userChar == 'y') {
userNum = realloc(userNum, (i + 2) * sizeof(double));
i++;
}
}
return 0;
)
最佳答案
打印数字时,您需要将循环计数器重新初始化为0
:
for (j = 0; j < (i + 1); j++) {
printf("%lf\n", userNum[j]);
}
并且您需要增加 userNum
中将数字扫描到的位置:
scanf("%lf", &userNum[i]);
关于c - While 循环使用 realloc,打印时不会更新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50112983/