2015-02-25 2 views
-2

Я пытаюсь найти файл, содержащий информацию о группе людей, например: их имя, фамилия и идентификатор.Поиск файлов и сравнение строк, содержащихся с введенной переменной

Я предлагаю пользователю ввести свой идентификационный код. Программа должна искать текстовый файл и следить за тем, чтобы их код соответствовал одному из файлов в файле, чтобы программа могла продолжить, сравнивая строку с файлом и переменную, введенную пользователем.

Я не уверен, как это реализовать. Ниже приведен фрагмент кода:

#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

Насколько большой файл? Сколько записей в нем. Как форматируется текст? Вы контролируете форматирование texte или это файл, предоставленный вам третьим лицом? –

+0

Итак, вы читаете файл и показываете его, и как только он закончится, вы просите идентификатор? три раза читал тот же ID? Нет очень удобного для пользователя! И где вы на самом деле ищете данные? – Christophe

ответ

0

Я не уверен, я понимаю вашу проблему, но вы можете попробовать это:

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; 
} 
Смежные вопросы