该程序应该允许用户输入任意数量的变量(存储在数组中)。一旦用户输入" -999",程序将停止填充数组,找到数组中的最大数字并结束。但是,当我在程序中输入一些测试数字时,它会有时成功结束,但有时它会决定崩溃。
例如,我可以输入:
100 (return) 200 (return) 300 (return) 400 (return) -999 (return)
它会崩溃。
然后我输入:
10 (return) 20 (return) 30 (return) 40 (return) -999 (return)
它将成功运行。然后,如果我键入我最初键入的内容,它将起作用并且不会崩溃。我甚至会重复这个测试,它不会复制相同的结果。
我完全感到困惑和迷失,任何帮助都会受到赞赏。
#include <stdio.h>
void fillArray(int *a);
int largestElement(int *a);
int i = 0;
int main()
{
int *array = (int *)malloc(sizeof(int));
fillArray(array);
printf("The largest element in 'array' is: %d\n", largestElement(array));
//Program randomly crashes right here sometimes, not sure why.
printf("Right before free function...\n");
free(array);
printf("Successfully freed!\n");
return 0;
}
void fillArray (int *a)
{
int userInput = 0;
printf("Type in a list of numbers terminated by a -999:\n");
while(userInput != -999)
{
//*a = realloc(a, (i+1) * sizeof(int));
scanf("%d", &userInput);
a[i] = userInput;
i++;
}
}
int largestElement(int *a)
{
int j;
int largest = a[0];
for(j = 0; j < i; j++){
if(a[j] > largest){
largest = a[j];
}
}
return largest;
}