Page 328

5.1 Ficheros de texto y ficheros binarios

1

2

1

2

1

2

1

0

0

\t

1

0

0

\n

1

0

0

Usar caracteres separadores es fuente, naturalmente, de un coste adicional: un mayor tama˜ no de los ficheros. Cuando los separadores son espacios en blanco, es frecuente permitir libertad en cuanto a su n´ umero: 1

2

\n

1

0

0

\n

Las herramientas con las que leemos los datos de ficheros de texto saben lidiar con las complicaciones que introducen estos separadores blancos repetidos. Los ficheros de texto cuentan con la ventaja de que se pueden inspeccionar con ayuda de un editor de texto y permiten as´ı, por lo general, deducir el tipo de los diferentes datos que lo componen, pues ´estos resultan legibles.

5.1.2.

Representaci´ on de la informaci´ on en los ficheros binarios

Los ficheros binarios requieren una mayor precisi´on en la determinaci´on de la codificaci´on de la informaci´ on. Si almacenamos el valor 12 en un fichero binario, hemos de decidir si queremos almacenarlo como car´ acter con o sin signo, como entero con o sin signo, etc. La decisi´on adoptada determinar´ a la ocupaci´ on de la informaci´on (uno o cuatro bytes) y su codificaci´on (binario natural o complemento a dos). Si guardamos el 12 como un char, guardaremos un solo byte formado por estos 8 bits: 00001100 Pero si optamos por almacenarlo como un int, ser´an cuatro los bytes escritos: 00000000 00000000 00000000 00001100 Un mismo patr´ on de 8 bits, como 11111111 tiene dos interpretaciones posibles: el valor 255 si entendemos que es un dato de tipo unsigned char o el valor −1 si consideramos que codifica un dato de tipo char.1 Como puedes ver, la secuencia de bits que escribimos en el fichero es exactamente la misma que hay almacenada en la memoria, usando la mism´ısima codificaci´on binaria. De ah´ı el nombre de ficheros binarios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . · 310 ¿Qu´e ocupa en un fichero de texto cada uno de estos datos? a) 1

d) -15

g) -32768

b) 0

e) 128

h) 2147483647

c) 12

f) 32767

i) -2147483648

¿Y cu´ anto ocupa cada uno de ellos si los almacenamos en un fichero binario como valores de tipo int? 1 Un fichero de texto no presentar´ ıa esta ambig¨ uedad: el n´ umero se habr´ıa escrito como −1 o como 255. S´ı que presentar´ıa, sin embargo, un punto de elecci´ on reservado al programador: aunque −1 lleva signo y por tanto se almacenar´ a en una variable de alg´ un tipo con signo, ¿queremos almacenarlo en una variable de tipo char, una variable de tipo int o, por qu´ e no, en una variable de tipo float?

322

Introducci´ on a la Programaci´ on con C

Profile for esLibre.com

Introducción a la programación con c  

Introducción a la programación con c  

Advertisement