Scrittura valori interi nel file binario
-
21-08-2019 - |
Domanda
Diciamo che ho un numero di matrice che contiene i seguenti valori:
int numbers = [12, 511, 337, 254];
Ora, vorrei scalare quei numeri in valori singoli byte e memorizzarli in un array di char
char numbersscaled;
for(i=0; i<4; i++) {
numbersscaled[i] = numbers[i]/2;
}
Infine, vorrei scrivere quei valori come file binario nel seguente modo:
filebin = fopen("results.bin", "wb");
if(file==NULL) {
printf("Error\n");
return 1;
}
fwrite(numbersscaled, sizeof(numbersscaled[0]),
numbersscaled/numbersscaled[0], filebin);
fclose(filebin);
Purtroppo, quando si cerca di compilare questo programma gcc non piace il comando fwrite:
error: invalid operands to binary / (have ‘char *’ and ‘int’)
Chiunque un idea di cosa mi manca? Grazie!
Soluzione
Sì, vi state perdendo sizeof
.
sizeof(numbersscaled)/sizeof(numbersscaled[0])
Si noti che ci sono molti errori di battitura nella tua domanda (mancanti []
, etc), rendendo difficile individuare il vero problema. Si prega di risolvere il problema.
Altri suggerimenti
numbersscaled dovrebbe essere array di caratteri non char.
fwrite(numbersscaled, sizeof(numbersscaled[0]), 4, filebin);
qualcosa che non va con,
numbersscaled/numbersscaled[0]
Non è char numberscaled[4]
? tho si è dichiarato come un char nella sua interrogazione.
Si consiglia di leggere nuovamente la pagina fwrite
dell'uomo.