Динамическое выделение памяти - C (СИ) (75910)
Формулировка задачи:
Здравствуйте!
Хочу часть кода,где динамически выделяется память под массив:
Заменить на код,где вместо 100 в calloc будет стоять число элементов в файле.
Подскажите пожалуйста как это можно сделать...
Пыталась добавлять цикл на подсчёт символов,но ничего не выходит.В чем ошибка?
double *darr;
if ( !(darr = (double *)calloc(100,sizeof(double)) ) )
{
fprintf(stderr,"osibka raspredeleniya pamyati!\n");
} double *darr; // массив символов
int k=0;
while (!feof(fin))
{
for(int i=0;;i++)
k=i++;
}
if ( !(darr = (double *)calloc(k,sizeof(double)) ) )
{
fprintf(stderr,"osibka raspredeleniya pamyati!\n");
}Решение задачи: «Динамическое выделение памяти»
textual
Листинг программы
double *darr; // массив символов
Объяснение кода листинга программы
- Объявляется указатель на массив символов с именем
darr. - В данном случае, переменная
darrявляется указателем, а не самим массивом. - Указатель
darrпока не указывает на какой-либо блок памяти. - Для того чтобы использовать указатель
darrкак массив, необходимо выделить под него память. - Однако, в данном коде, выделение памяти для указателя
darrне выполняется. - Поэтому,
darrне может быть использован для хранения значений типа double. - Переменная
darrостается пустой и не содержит адреса какого-либо блока памяти. - В результате, попытка использовать
darrкак массив приведет к неопределенному поведению.