C++ 按平台名称过滤的函数

C++ Function that filters by name of plataform

本文关键字:过滤 函数 平台 C++      更新时间:2023-10-16

我有一个函数来显示在我的程序中注册的每个游戏:

void games_per_plataform(void)
{
char type[TYPE];
PTRGM aux;
if (!head)
{
    printf("n      No games!n");
    getch();
    return;
}
//Show plataforms of registered games
printf("n");
printf("      %-20sn","plataforms of registered games");
for(aux=head;aux!=NULL;aux=aux->next)
{
    printf("n      %-20sn", aux->Plataform);
}

我需要一个函数,只显示用户想要看到的一些平台的游戏。 这是我已经拥有的:

//Show games filtered by plataform
printf("n      Plataform - ");
scanf("%s",&tipo);
printf("n      %-20s %-20s %-20s %-20sn","Name", "Plataform", "Genre", "Price");
for(aux=head;aux!=NULL;aux=aux->next)
{
    printf("      %-20s %-20s %-20s %-20fn", aux->Name, aux->Plataform, aux->Genre, aux->Price);
}
getch();
}

您唯一需要做的就是过滤循环中的输出:

scanf("%s",type);
...
int tln=strlen(type); 
for(aux=head;aux!=NULL;aux=aux->next)
{
    if (strncmp(aux->Plataform,type,tln)==0)
        printf("      %-20s %-20s %-20s %-20fn", aux->Name, aux->Plataform, aux->Genre, aux->Price);
}

当平台从用户输入的内容开始时,此解决方案还会打印整个内容。 请注意,我保留了您的 C 样式,并且scanf()中存在缓冲区溢出的风险。