utworzony zostanie plik WEKTORY.BIN, w którym zapisane zostaną
współrzędne pewnej liczby wektorów, reprezentowanych przez
zdefiniowany poniżej typ:

struct wektor{
float x, y, z;
};

(2) wydrukowane zostaną wartości długości wektorów z pliku
WEKTORY.BIN (wskazówka: zapisz zawartość pliku do tablicy)
w kolejności od najkrótszego do najdłuższego. wykorzystaj funkcje fwrite(), fread(),
qsort(), funkcja porównująca długości dwóch wektorów powinna zwracać
1, -1 lub 0)

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#define N 10
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
struct wektor {
    float x, y, z;
};
float randfrom(float min, float max);
int main(int argc, char* argv[])
{
    FILE* p;
    float a, b, c;
    int i, j;
    p = fopen("WEKTORY.BIN", "w+b");
    srand(time(NULL));

    for (i = 0; i < 10; i++) {
        a = randfrom(0, 10);
        b = randfrom(0, 10);
        c = randfrom(0, 10);
        fwrite(&a, sizeof(float), N, p);

        fwrite(&b, sizeof(float), N, p);

        fwrite(&c, sizeof(float), N, p);
    }
    fclose(p);
    p = fopen("WEKTORY.BIN", "r+b");
    struct wektor wektory[N];
    fread(&wektory->x, sizeof(wektory[0]), N, p);
    fread(&wektory->y, sizeof(wektory[0]), N, p);
    fread(&wektory->z, sizeof(wektory[0]), N, p);
    fclose(p);
    for (j = 0; j < 10; j++)
        printf("%.2f   %.2f   %.2f  ", wektory->x, wektory->y, wektory->z);
    return 0;
}
float randfrom(float min, float max)
{
    float range = (max - min);
    float div = RAND_MAX / range;
    return min + (rand() / div);
}

Mam problem z wypełnieniem pliku i potem pobraniem w odpowiedni sposob tych danych.