Я пытаюсь создать динамический массив float. Пользователь должен вводить значения до тех пор, пока не будет найден отрицательный. Затем покажите массив на экране. Поскольку я не знаю размер массива, каждый раз, когда вводится действительное значение, я использую realoc() для увеличения размера массиваСоздайте и распечатайте динамический массив с плавающей точкой в C
Мой код выделяет память для всех элементов, но когда я печатаю массив, я получаю ошибка сегментации. Не знаю, присвою ли значения неверным образом или не могу их прочитать.
Вот код:
#include <stdio.h>
#include <stdlib.h>
unsigned int createArray(float*);
void printArray(float *, unsigned int);
int main(){
float *pArray = NULL;
unsigned int arrayLength = 0;
arrayLength = createArray(pArray);
printArray(pArray, arrayLength);
return 0;
}
/**
* Ask the user to fill an array untill he types a negative value
*
* @param A pointer to the array we want to create
* @return The final length of the array
*
*/
unsigned int createArray(float *pArray){
float number = 1;
int arrayLength = 0;
while(number>0){
printf("\nSetting number %d: ", arrayLength);
scanf("%f", &number);
arrayLength++;
pArray=realloc(pArray, sizeof(float)*arrayLength);
if(pArray==NULL){
printf("\nERROR: Not enough memory");
free(pArray);
exit(0);
}
pArray[arrayLength-1] = number;
}
return arrayLength;
}
/**
* Prints an array given by the user
*
* @param Pointer to the array
* @param Length of the array
*
*/
void printArray(float *pArray, unsigned int arrayLength){
for(int i=0;i<arrayLength;i++){
printf("\nItem[%d]: %.2f", i, *pArray+i);
}
}
A d ynamic array обрабатывается не так, как статический или автоматический массив. – Olaf
Что такое точка 'free (NULL)'? –
Touché, Не понял об этом. –