C/Visual C - Como crear un indice para controlar un fichero

 
Vista:

Como crear un indice para controlar un fichero

Publicado por juan andrés (2 intervenciones) el 22/05/2001 19:18:04
como crear un indice para que con este, poder controlar un fichero binario. Gracias
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:Como crear un indice para controlar un fichero

Publicado por Joshua Ramirez (15 intervenciones) el 22/05/2001 20:00:14
Mira, tenes que utilizar una estructura de datos para que inicialices el archivo en blancos y hacer las consultas o introducciones de texto en forma directa o secuencial.

Ej.

struct registro
{
int indice;
char nombre[25];
char direccion[50];
}

int x,cont=1;

/*inicializamos para 10 registros */
for(x=0;x<10;x++)
{
registro.indice=cont;
registro.nombre="";
registro.direccion="";
}

Para accesarlos vas a crear una funcion que te calcule en que posicion esta el registro deseado, ya que un registro como veras ocupara la suma de la variable entera mas las dos de las caracteres, si es directo tienes que hacer pos=numero de clave * tamaño del registro(sizeof);
luego con fseek te posicionas en esa posicion valga la redundancia, pides tus datos y los mandas al archivo con fwrite.

Para leer los datos es lo mismo:
pides la clave calculas la posicion y te vas hacia alla con fseek, lees los datos con fread y los desplegas en pantalla.

Ahora no te puedo proporcionar con exactitud todo, pero si deseas podes escribirme Ok.

Atte Josh !! =)
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:Como crear un indice para controlar un fichero

Publicado por Ismael (230 intervenciones) el 24/05/2001 00:07:06
Supongo que el indice deberá estar relacionado con el numero de datos
Si es asi, debemos:
-Abrir fichero: fopen()
- Ir al final del fichero: fseek(... SEEK_END)
- Guardar el número de bytes del fichero: ftell()
- Calcular el número de datos contenidos=(num bytes fichero)/(sizeof(dato guardado)). Este valor te permite rtecorre secuencialmente el archivo y también de forma aleatoria con fread() con un desplazamineto del puntero de lectura/escritura igual a sizeof(dato).
Espero que te valga. Si no te funcion, enviame un mail y te mado un ejemplo.
Un saludo.

Isamel
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