C/Visual C - Archivos de Acceso Aleatorio en C.

 
Vista:

Archivos de Acceso Aleatorio en C.

Publicado por Gonzalo Duarte (1 intervención) el 03/07/2005 06:36:48
Necesito crear un programa en Lenguaje C que acceda a archivos de manera aleatoria o relativa, es decir, que tenga accesos a los registros que almacene en éste por medio de un número de registro. Revisando la ayuda de TC++, vi que el acceso a los archivos puede ser de modo texto o binario, pero se refiere a la forma de almacenamiento o recuperación de los registros. No obstante, en Lenguaje Basic he manejado este mismo tipo de archivos sin problemas, que dado un número de registro se accede al registro mismo. ¿Conocen las instrucciones o alguna fuente de donde me pueda basar para trabajar con archivos de acceso aleatorio en C? Mil Gracias :D
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Archivos de Acceso Aleatorio en C.

Publicado por BluSky (28 intervenciones) el 03/07/2005 11:27:04
La librería <stdio.h> define la función fseek que desplaza el puntero de fichero un número determinado de bytes para poder, luego, efectuar su lectura o escritura con las funciones correspondientes.
El prototipo de la función es:
int fseek(FILE *Fichero, long Bytes_a_desplazar, int Origen)
donde orígen se refiere a "desde donde" se desplaza el puntero:
SEEK_SET si lo hará desde el principio del fichero
SEEK_CUR si lo hara desde la posición actual
SEEK_END si lo hará desde el final
Por ejemplo, si tenemos un fichero de acceso aleatorio con estructuras de tipo "datos" almacenados y queremos acceder a la n-sima posición haríamos:
FILE *Fich;
struct datos V;
....
...
fseek(Fich, (n-1)*sizeof(V), SEEK_SET);
fread(..........)

Si cada elemento de tu estructura tiene (pongamos) 20 bytes, el 2º registro empezará en el byte 20, el 3º en el byte 40 y el 4º en el 60.
Para ello, si queremos acceder al 4º registro, en la linea de fseek le decimos al compilador que desplace el puntero n-1 (4-1) multiplicado por lo que ocupa la estructura (20); es decir 3*20=60 con lo que quedaría el puntero en el byte 60 para la siguiente sentencia de lectura (o escritura)
Saludos
Sebas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Archivos de Acceso Aleatorio en C.

Publicado por Ismael (230 intervenciones) el 03/07/2005 17:11:50
Mira en
http://programandoenc.webcindario.com

Tienes tutotiales, ejemplos... un poco de todo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Archivos de Acceso Aleatorio en C.

Publicado por BluSky (10 intervenciones) el 03/07/2005 20:42:48
Muy buena página. ¿Algo parecido para C++?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar