gpt4 book ai didi

c - 从 C 中的文本文件打印有关有年龄限制的人的数据

转载 作者:行者123 更新时间:2023-11-30 16:17:57 29 4
gpt4 key购买 nike

我的任务是编写一个程序,该程序读取 .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

最佳答案

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);

小心 ID。当达到10(或100、1000)时,您需要调整起始索引。

关于c - 从 C 中的文本文件打印有关有年龄限制的人的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56102510/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com