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

时间:2015-04-19 21:07:03

标签: c++

我有一个功能来显示我的程序中注册的每个游戏:

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("      %-20s\n","plataforms of registered games");
for(aux=head;aux!=NULL;aux=aux->next)
{
    printf("\n      %-20s\n", aux->Plataform);
}

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

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

1 个答案:

答案 0 :(得分:0)

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

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 %-20f\n", aux->Name, aux->Plataform, aux->Genre, aux->Price);
}

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