Salve ho una struttura così definita:
codice:
structdato {    
    double valore;
    unsigned classe;

};
a struttura contiene il campo valore che descrive un certo valore numerico e il campo classe chedescrive la tipologia del dato. La classe sarà un valore tra 0 e 10.

Devo fare una funzione così definita:

codice:
extern int salva_conteggio_bin (const char *filename, struct dato *pdati, unsigned int n);
La funzione accetta come parametro un nome di file che deve essere aperto in scrittura inmodalità non tradotta (binario), un puntatore alla zona di memoria contenente variabili di tipostruct dato e il numero di dati contenuti in quella zona di memoria. La funzione deve scrivere sulfile 11 interi senza segno a 32 bit in little endian corrispondenti al numero di dati di ogni possibileclasse (da 0 a 10).

Ad esempio, chiamando la funzione in questo modo:
codice:
structdato x[] = { { 0.1, 0 }, { 1.45, 2 }, { 0.81, 0 } };

    salva_conteggio_bin("file.bin", x, 3);
il file file.bin, visto in un editor esadecimale conterrebbe:



02 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00


Ho provato a fare cosi:
codice:
externvoid salva_conteggio_bin(constchar *filename, structdato *pdati, unsignedintn){    
    FILE *f;
    f = fopen(filename, "wb");
    int i;
    int count[11] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };

    for (i = 0; i < n; i++){
        count[pdati[i].classe]++;
    }

    for (i = 0; i < 11; i++){
        fprintf(f,"%0.8x ", count[i]);
    }
}
Non riesco a capire come formattare i dati esadecimali e come trasformali in little endian.
grazie