2010-12-16 15 views
6

¿Cómo leer y escribir números flotantes desde y hacia archivos binarios? en lenguaje C o Vala? Las API comunes para hacer escrituras y lecturas generalmente están diseñadas para escribir en formato de bytes. Quiero decir que tienes que escribir matrices de datos de un byte en un archivo y leer en el mismo formato.cómo leer y escribir números flotantes desde y hacia archivos binarios?

Estoy buscando una forma de escribir y leer en formato flotante. sin encasillar y sin tener que cambiar el número a cadena. ¿Es posible?

+0

posible duplicado de [Serializar doble y flotar con C] (http://stackoverflow.com/questions/3418319/serialize-double-and-float -with-c) –

Respuesta

3

fwrite() y fread() o write() y read() funcionarán bien.

float da, db ; 
    ... 
fwrite(&da, 1, sizeof(da), fpout) ; 
    ... 
fread(&db, 1, sizeof(db), fpin) ; 
+0

¿Alguna vez has probado esto? – sepisoad

+5

@SepiDev: Él no necesita, es usted quien hace la pregunta después de todo; ¿Lo has probado? Si tiene un problema con él, explíquelo en la pregunta, con el código que está usando. Un flotante se escribirá como cuatro bytes; siempre que no intercambie datos entre sistemas con diferente codificación de flotación u orden de bytes, esto * * funcionará. – Clifford

+2

Esto ignora la permanencia en la serialización del flotador. Siempre que nunca mueva ese formulario serializado (archivo, en este caso) a una máquina de una endianidad diferente, funcionará. También asume que las representaciones de punto flotante son las mismas (algo así como endianness), pero nunca he visto nada que no fuera IEEE 754 – Thanatos

-1

En Vala que puede hacer:

public void main() { 
    float foutvalue = 5.55; 
    { //Need to make vala close the output file! 
     var output = FileStream.open("floatfile","w"); 
     output.printf("%f", foutvalue); 
    } 

    float finvalue = 0.0; 
    { 
     var input = FileStream.open("floatfile", "r"); 
     input.scanf("%f", out finvalue); 
    } 
    print(@"$finvalue\n"); 
} 
Cuestiones relacionadas