Bonjour,
J'ai au départ un fichier texte (.txt).
J'ai créé en utilisant la librairie bplus un fichier index (.idx) basé sur 2 dernières positions de chaque ligne du fichier texte.
Je n'arrive pas à relire les données du fichier texte en utilisant le fichier index (.idx) précédemment créé.
J'arrive à lire le contenu du fichier texte en séquentiel.
J'arrive à lire le contenu du fichier .idx. (en séquentiel et en me positionnant dans le fichier à partir d'une certaine clé).
Je ne trouve pas la méthode pour lire le contenu du fichier texte au départ du fichier index (lecture indexée sequentiel).
Quelqu'un a-t-il la solution ?
Merci.

Programme pour créer le fichier index (fonctionne parfaitement) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
int main(void)
{
    FILE *source;
    IX_DESC nameIndex;
    ENTRY ee;
    char cPays[3];
    char cData[10];
    long iPos;
    char sPos[7];
 
    source = fopen("pays.txt", "r");                //Ouverture du fichier source en lecture
 
    if (source!=NULL)                                       //Test d'ouverture du fichier source
    {
        printf("\n\t\t\tCreation du fichier en cours...");
        make_index("pays.idx",&nameIndex,0);         //Creation du fichier index
        while (caract=fgetc(source)!=EOF)                    //Parcours du fichier source tant qu'on a pas atteint la fin de fichier
        {
            caract=fgetc(source);  //Lecture d'un caractère dans le fichier source
            while(caract!='\n')caract=fgetc(source);        //Positionnement en fin de ligne en lisant un par un les caractère tant qu'il n'y a pas de retour a la ligne
            fseek(source,-4,SEEK_CUR);                      //Positionnement au code pays en reculant le curseur d'un certain nombre de caractère
            fgets(cPays,3,source);            //Lecture du cope pays
            printf("%s",&cPays);
            strcpy(ee.key,cPays);             //Copie du code pays dans la structure
            add_key(&ee,&nameIndex);                        //ajout du code pays a l'index
            caract=fgetc(source);
        }
        close_index(&nameIndex);                            //Fermeture du fichier index
        fclose(source);                                     //Fermeture du fichier source
        Sleep(1000);                                        //Attente d'une seconde à l'affichage
        printf("\n\n\n\t\t\tCreation du fichier terminer\n\n\t\t\tNom du fichier creer: pays.idx.\n");
        Sleep(1000);                                        //Attente d'une seconde à l'affichage
    }
    else
    {
        printf("Erreur d'ouverture du source.");
    }
    return 0;
}
Programme de lecture du contenu du fichier index :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
int main(void)
{
    ENTRY    e;
    IX_DESC  names;
    int ret;
    long cPos;
 
    FILE* fp;
 
    char saisie[3];
    char texte[50];
    char cpays[3];
 
    fp = fopen("pays.txt","r");
    printf("Debut lecture en sequence");
    open_index("pays.idx", &names, 0);
    first_key(&names);
    ret = next_key(&e, &names);
    while (ret != EOIX)
    {
        printf(e.key);
        printf(e.recptr);
        ret = next_key(&e, &names);
    }
    printf("Fin lecture en sequence");
    close_index(&names);
}