Salve ho una struttura così definita:
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.codice:structdato { double valore; unsigned classe; };
Devo fare una funzione così definita:
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).codice:extern int salva_conteggio_bin (const char *filename, struct dato *pdati, unsigned int n);
Ad esempio, chiamando la funzione in questo modo:
il file file.bin, visto in un editor esadecimale conterrebbe:codice:structdato x[] = { { 0.1, 0 }, { 1.45, 2 }, { 0.81, 0 } }; salva_conteggio_bin("file.bin", x, 3);
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:
Non riesco a capire come formattare i dati esadecimali e come trasformali in little endian.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]); } }
grazie