Я делаю программу, в которой я могу добавлять игры в список и показывать этот список, но теперь я хотел добавить функцию, которая позволяет мне писать название игры и искать его в этом списке, и, если он найден, отображается его информация. Вот мой код до сих пор. PS: я не включил main, потому что не позволял мне публиковать вопрос из-за слишком большого кода
struct defJogo {
char nome[100];
int horasJogadas;
char DiaJogado[50];
};
void inserir(){
struct defJogo JogoAGuardar;
FILE *fJogo;
fJogo = fopen(FileJogos, "rb+");
if (!fJogo) {
fJogo = fopen(FileJogos, "wb");
fclose(fJogo);
fJogo= fopen(FileJogos, "rb+");
}
printf("\n----------NOVO JOGO------------\n");
printf("Nome:");
fflush(stdin);
gets(JogoAGuardar.nome);
printf("Horas Jogadas:");
fflush(stdin);
scanf("%d", &JogoAGuardar.horasJogadas);
printf("Ultimo dia Jogado:");
fflush(stdin);
gets(JogoAGuardar.DiaJogado);
fseek(fJogo, 0, SEEK_END);
fwrite (&JogoAGuardar, 1, sizeof(struct defJogo), fJogo);
fclose(fJogo);
}
void listar(){
struct defJogo JogoAGuardar;
FILE *fJogo ;
fJogo = fopen(FileJogos, "rb+");
if (fJogo) {
fseek(fJogo, 0, SEEK_SET);
int EOFEncontrado = 0;
float mediaHoras = 0;
int contador = 0;
while (EOFEncontrado == 0) {
fread(&JogoAGuardar, 1, sizeof(struct defJogo), fJogo);
if(feof(fJogo)) {
EOFEncontrado = 1;
}
else {
printf("Registo: %s foi jogado %d horas e jogado no pela ultima vez no dia %s\n",
JogoAGuardar.nome, JogoAGuardar.horasJogadas, JogoAGuardar.DiaJogado);
mediaHoras += JogoAGuardar.horasJogadas;
contador++;
}
}
if (contador > 0) {
mediaHoras = mediaHoras/contador;
printf("Numero de Jogos: %d tem media de horas jogadas~por jogo %f\n",
contador, mediaHoras);
}
fclose(fJogo);
}
else {
printf("Ficheiro inexistente... deve criar pelo menos um registo\n");
}
getch();
return 0;
}