Моя задача - создать программу, которая читает файл .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