Duda sobre C y ficheros

Z3R0KULL

Wola, es sobre una duda que tengo con los ficheros en C.
¿Que diferencia hay entre ficheros secuenciales y ficheros directos?es decir, ¿Como se introducen los datos en un fichero secuencial y en uno directo?
Y una cosa mas, que es una rotura de control(o algo asi)?
Gracias!

EnTe

supongo que, como su propio nombre indica, en una fichero secuencial se guardarán los datos de forma secuencial (osea uno detras de otro) mientras que los ficheros directos, guardará los datos al final del fichero, donde haya espacio libre.

Salu2.

S

Un fichero secuencial es en el que sólo puedes leer los datos por orden. En uno de acceso directo puedes acceder a cualquier campo sin pasar por los anteriores. Está claro que uno de acceso directo lo puedes usar como secuencial :P

En ambos se escribe con write(), pero en los directos puedes hacer lseek() para colocarte en la posición que quieras antes de escribir/leer.

En general, en UNIX todos los ficheros normales son de acceso directo, los únicamente secuenciales se limitan a pipes, fifos y dispositivos como teclado o ratón (no puedes hacer lseek() para ver qué vas a escribir en el futuro xD).

La ruptura de la secuencia de control es el goto que no te dejan usar :P
Es bastante problemático depurar un programa con gotos, ya que fácilmente generas ramas de ejecución que no tenías pensadas.

murpix

Veamos, el fichero secuencial guarda los registros uno a continuación del otro en forma de secuencia, como el propio nombre indica.
El fichero directo, partiendo de que tu reservas memoria para guardar los registros que quieras en el fichero, grabas en una posición dada, dicha posición en c, se suele obtener al aplicarle algun "algoritmo" a la clave del registro a guardar, y obtiendo dicha posición donde guardar. El problema de esto es que se puede dar de que se repita la posición donde guardar el registros, y tuviese que crear un fichero de desborde. La ventaja es que, es mucho mas rapido ya que no tienes que ir registro por registro, sino que te posicionas directamente en la posición obtenida.

Usuarios habituales

  • murpix
  • Soy_HeatoN
  • EnTe
  • Z3R0KULL