Распечатать данные о людях с ограничением по возрасту из текстового файла в C - PullRequest
0 голосов
/ 12 мая 2019

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


 int Search_in_File(char *fname, char *str) {
        FILE *fp;
        int line_num = 1;
        int find_result = 0;
        char temp[40];

        if((fp = fopen(fname, "r")) == NULL) {
            return(-1);
        }

        while(fgets(temp, 40, fp) != NULL) {
            if((strstr(temp, str)) != NULL) {
                printf("\n%s\n", temp);
                find_result++;
            }
            line_num++;
        }

        if(find_result == 0) {
            printf("\nSorry, couldn't find a match.\n");
        }

        //Close the file if still open.
        if(fp) {
            fclose(fp);
        }
        return(0);
    }


getchar();
switch(sel){
case 1:
                printf("Find person\n");
                printf("Enter surname to find: ");
                fgets(cmp, 40, stdin);
                err = Search_in_File(fname, cmp);
                if(err < 0)
                {
                    return err;
                }
                break;
case 2: //here should be the option of printing people who are older than 60
       }while(sel!=4);

    return 0;         
}

Каков был бы правильный и лучший способ сделать это?Учитывая, что я должен рассчитать возраст без високосного года или, по крайней мере, только годы (без месяцев и дней).Например, если у меня 4 человека:

1 11/10/1987 country1 John Doe 
2 12/08/1950 country2 Mary Solley 
3 23/02/1988 country3 Kieth Owell 
4 29/12/1954 country4 Bob Stevens 

И я выбираю опцию отображения людей старше 60 лет, она должна вывести:

2 12/08/1950 country2 Mary Solley 
4 29/12/1954 country4 Bob Stevens 

1 Ответ

0 голосов
/ 12 мая 2019

Наличие

char line[] = "4 11/10/1987 country1 John Doe";

Вы можете извлечь день, месяц и год в виде строк с помощью

char day[3] = "";
char month[3] = "";
char year[5] = "";
strncpy(day, line+2, 2);
strncpy(month, line+5, 2);
strncpy(year, line+8, 4);

Остерегайтесь удостоверения личности. Когда он достигает 10 (или 100, или 1000), вам нужно настроить начальные индексы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...