2015-02-25 3 views
-2

J'essaie de rechercher un fichier contenant des informations sur un groupe de personnes, par exemple: leur prénom, leur nom et leur ID.Rechercher un fichier et comparer les chaînes qu'il contient avec la variable entrée

Je demande à l'utilisateur d'entrer son code d'identification. Le programme doit rechercher le fichier texte et s'assurer que son code correspond à celui du fichier afin que le programme puisse continuer en comparant la chaîne du fichier et la variable entrée par l'utilisateur.

Je ne suis pas sûr comment implémenter ceci. Ci-dessous un extrait du code:

#include <stdio.h> 
#include <conio.h> 
#include <string.h> 

typedef struct record { 
    char (fname[3])[20]; 
    char (lname[3])[20]; 
    int code[3]; 
} information; 

int main (void) { 
    char ffname[20], flname[20]; 
    int fID, i; 
    FILE *kfile; 

    if ((kfile = fopen("C:\\Users\\Student\\Downloads\\information.txt","r")) == NULL) { 
    perror("Error while opening file"); 
    } else { 
    printf("%-20s %-20s %s\n", "First Name", "Last Name", "ID"); 
    fscanf(kfile, "%19s %19s %d", ffname, flname, &fID); 
    printf("\n"); 
    while (!feof(kfile)) { 
     printf("%-20s %-20s %04d\n", ffname, flname, fID); 
     fscanf(kfile, "%19s %19s %d", ffname, flname, &fID); 
    } 
    fclose(kfile); 
    } 

    information info; 
    for (i = 0; i < 3; i++) { 
    printf("Please enter your ID."); 
    scanf("%04d", &info.code); 
    } 
    getch(); 
    return 0; 
} 
+0

Quelle est la taille de votre fichier? Combien y a-t-il d'enregistrements? Comment le texte est-il formaté? Contrôlez-vous le formatage du texte ou est-ce un fichier qui vous est donné par un tiers? –

+0

Alors vous lisez le fichier et l'affichez et une fois que c'est fini vous demandez l'ID? trois fois en lisant le même ID ?? Pas très convivial! Et où recherchez-vous réellement les données? – Christophe

Répondre

0

Je ne suis pas sûr que je comprends votre problème, mais vous pouvez essayer ceci:

typedef struct record { 
    char *fname; 
    char *lname; 
    int code; 
} information; 

int main (void) { 
    char ffname[28], flname[28]; 
    int fID, i, id_; 
    information array[3]; 
    FILE *kfile; 
    i = 0; 

    if ((kfile = fopen("C:\\Users\\Student\\Downloads\\information.txt","r")) == NULL) { 
    perror("Error while opening file"); 
    } else { 
    while (!feof(kfile)) { 
     fscanf(kfile, "%s %s %d", ffname, flname, &fID); 
     array[i].fname = strdup(ffname); 
     array[i].lname = strdup(flname); 
     array[i].code = fID; 
     i++; 
    } 
    fclose(kfile); 
    } 

    printf("Please enter your ID: "); 
    scanf("%d", &id_); 
    for (i = 0; i < 3; i++) { 
    if (array[i].code == id_) { 
     // print the record 
     printf("%s %s \n", array[i].fname, array[i].lname); 
    } 
    } 
    return 0; 
}