Код, вероятно, не выполняется, поскольку array[n]
объявлено с неинициализированным n
.В то время, когда вы читаете n
с помощью scanf (), массив не «автоматически увеличивается до нужного размера».Вы должны либо объявить array
достаточно большим, либо, если вы действительно хотите, чтобы он был определен пользователем, использовать malloc для его выделения (см. comp.lang.c FAQ ) и все тегированные массивы вопросов Stackoverflow...)
Кроме того, scanf в какой-то момент дает сбой.Обратите внимание, что при вводе чисел в строке ввода также вводится символ «Ввод» ('\n'
).Вы никогда не читаете новую строку, поэтому следующий scanf завершается неудачей.
Это становится очевидным, когда вы фактически проверяете возвращаемое значение из scanf с помощью кода, подобного следующему:
if (scanf("%f", &array[i]) == 1) {
/* successfully converted 1 item */
}
else {
/* scanf failed */
}
Обычно вы хотите пропуститьпробелы на входе.Вы делаете это, помещая пробел в формате scanf.Обратите внимание, что один пробел указывает scanf пропустить любой объем пробела.
if (scanf(" %f", &array[i]) == 1) {