用C语言实现根据关键字在文件中查找相关信息并输出

如题,怎么用C语言来实现从已有的文件中根据输入一个关键字就会显示出与其相关的信息并输出。比如文件中的信息是 学号:1 姓名:小明 性别:男然后输入关键字,比如“小明”,就会出现有关他的信息,并输出,大概是不是也会用到file相关的函数和结构体之类的
希望能有具体的代码,能够运行,随便弄个事例就行。


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXSIZE 1024
struct student {
    char sno[20];
    char sname[20];
    char sex[10];
};
char*getInfo(char*source,char split){
    char*p=source;
    while(p!=NULL&&*p!='\0' &&*p!=split){
        p=p+1;
    }
    return p;
}
struct student* classroom_student[MAXSIZE];
void browseFile(const char* fileName)
{
    FILE*fp =fopen(fileName, "r+");
    char in_no[MAXSIZE]="\0", in_name[MAXSIZE] = "\0", in_sex[MAXSIZE] = "\0";
    char*tmp;
    int i=0;
    while (!feof(fp)) { //获取一行
        fscanf(fp,"%s",in_no);
        fscanf(fp,"%s",in_name);
        fscanf(fp,"%s",in_sex);
        //printf("%s %s %s\n",in_no,in_name,in_sex);
        classroom_student[i] = (struct student*)malloc(sizeof(struct student));
        tmp=getInfo(in_no,':');
        strcpy(classroom_student[i]->sno,tmp+1);
        tmp=getInfo(in_name,':');
        strcpy(classroom_student[i]->sname,tmp+1);
        tmp=getInfo(in_sex,':');
        strcpy(classroom_student[i]->sex,tmp+1);
        i+=1;
    }
    fclose(fp);
}
int main()
{
    browseFile("C:\\Users\\Lenovo\\Desktop\\students.txt");
    char name[20]="小明";
    struct student*p=classroom_student[0];
    int i=0;
    while(p!=NULL&&strcmp(p->sname,name)!=0){
        p=classroom_student[i++];
    }
    if(p!=NULL){
        printf("名字:%s 编号:%s 性别:%s\n",p->sname,p->sno,p->sex);
    }else{
        printf("查无此人\n");
    }
    system("pause");
}