C/Visual C - necesito un programa de archivos indexados

 
Vista:

necesito un programa de archivos indexados

Publicado por LIZ (1 intervención) el 25/07/2001 04:58:12
enviar un ejemplo
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
Imágen de perfil de Alejandro

Programa de archivos indexados

Publicado por Alejandro (913 intervenciones) el 04/10/2024 16:59:39
Liz, puedo proporcionarte un ejemplo de código en C/Visual C que te ayudará a comprender cómo implementar un programa de archivos indexados. A continuación se muestra un ejemplo básico:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <stdio.h>
#include <stdlib.h>
 
struct Registro {
    int clave;
    char nombre[50];
    // Otros campos del registro
};
 
struct Indice {
    int clave;
    long posicion;
};
 
void insertarRegistro(FILE* archivoDatos, FILE* archivoIndice, struct Registro registro) {
    // Escribir el registro en el archivo de datos
    fseek(archivoDatos, 0, SEEK_END);
    fwrite(&registro, sizeof(struct Registro), 1, archivoDatos);
 
    // Crear el índice para el registro
    struct Indice indice;
    indice.clave = registro.clave;
    indice.posicion = ftell(archivoDatos) - sizeof(struct Registro);
 
    // Escribir el índice en el archivo de índice
    fseek(archivoIndice, 0, SEEK_END);
    fwrite(&indice, sizeof(struct Indice), 1, archivoIndice);
}
 
void buscarRegistro(FILE* archivoDatos, FILE* archivoIndice, int clave) {
    // Leer el índice correspondiente a la clave
    struct Indice indice;
    while (fread(&indice, sizeof(struct Indice), 1, archivoIndice) == 1) {
        if (indice.clave == clave) {
            // Moverse a la posición del registro en el archivo de datos
            fseek(archivoDatos, indice.posicion, SEEK_SET);
 
            // Leer y mostrar el registro
            struct Registro registro;
            fread(&registro, sizeof(struct Registro), 1, archivoDatos);
            printf("Registro encontrado:\n");
            printf("Clave: %d\n", registro.clave);
            printf("Nombre: %s\n", registro.nombre);
            // Mostrar otros campos del registro si es necesario
 
            return;
        }
    }
 
    printf("Registro no encontrado.\n");
}
 
int main() {
    FILE* archivoDatos = fopen("datos.dat", "rb+");
    FILE* archivoIndice = fopen("indice.dat", "rb+");
 
    if (archivoDatos == NULL || archivoIndice == NULL) {
        printf("Error al abrir los archivos.\n");
        return 1;
    }
 
    // Ejemplo de inserción de un registro
    struct Registro nuevoRegistro;
    nuevoRegistro.clave = 1;
    strcpy(nuevoRegistro.nombre, "Ejemplo");
    insertarRegistro(archivoDatos, archivoIndice, nuevoRegistro);
 
    // Ejemplo de búsqueda de un registro
    buscarRegistro(archivoDatos, archivoIndice, 1);
 
    fclose(archivoDatos);
    fclose(archivoIndice);
 
    return 0;
}

Este es solo un ejemplo básico para mostrarte cómo se puede implementar un programa de archivos indexados en C/Visual C. Recuerda que este código es solo una guía y puede requerir modificaciones adicionales según tus necesidades específicas.

Asegúrate de crear los archivos "datos.dat" y "indice.dat" antes de ejecutar el programa. Además, ten en cuenta que este ejemplo no incluye todas las operaciones y funcionalidades que podrías necesitar en un programa de archivos indexados completo.
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