Я новичок в программировании на С и хочу писать элементы из корзины. файл в динамически распределенную массив. Проблема в том, что я не знаю, сколько элементов (1 элемент является определяемой пользователем структурой) этот файл имеет, поэтому я не знаю, как выделить arry для размещения этих элементов из файла.Получение числа элементов в файле
Я не знаю, хорошо ли я объяснил, у меня есть файл «students.txt» (я все еще хочу использовать его как двоичный), и он состоит из N студентов. Теперь я хочу, чтобы читать учеников в выделенном динамическом массиве. Проблема в том, что я не знаю, как найти количество студентов в файле, чтобы выделить память в массиве для этого числа студентов.
так есть функция, которая возвращает количество элементов sertian типа из файла?
Я знаю, что
int fread(void *array, int size, int count, FILE *dat);
возвращает число элементов, но я также необходимо указать массив, в котором файлы будут написаны и я не имею, что массив выделяется еще. Извините, если я сделал это слишком сложно, надеюсь, вы понимаете мою проблему и сожалеете об этом. это не мой родной язык.
Определение struct
:
typedef struct
{
char indeks[8];
char ime[21];
char prezime[21];
double prosjek;
} STUDENT;
Для ситуаций, подобных этому, вам необязательно знать количество элементов перед рукой. Общий подход заключается в использовании динамического распределения памяти ('malloc' и/или' realloc'). Чтобы вы могли наращивать свой массив по мере необходимости (или использовать что-то вроде связанного списка - в зависимости от ваших требований). – kaylum
Пожалуйста, укажите определение * student *. –
Если вам действительно нужно знать количество элементов, а структуры - фиксированный размер, в файле больше ничего нет, и вы доверяете целостности файла, тогда вы можете получить размер файла и разделить его по размеру структуры (двоичного). – kaylum