我有一个功能来显示我的程序中注册的每个游戏:
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();
}
答案 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()
中存在缓冲区溢出的风险。