Eu estou com um problema... não estou conseguindo resolvar duas opções que é para ser feito no meu trabalho em C
4- Consultar o competidor mais velho
5- Consultar o vencedor da prova
Porém, na questão, não fala nada sobre percorrer o arquivo, e eu andei pensando em comparar já na hora de registrar os maratonistas
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
struct Maratonista{
int numeroCadastro;
char nomeMaratonista[50];
int idadeMaratonista;
int tempoProva; // O tempo de prova será dado em minutos
};
FILE *openFile(char *fileName, char *mode) { // Abertura do arquivo
FILE *arquivo = NULL;
arquivo = fopen(fileName, mode);
if (arquivo == NULL) {
printf("Erro ao abrir o arquivo!");
return NULL;
}
return arquivo;
}
void closeFile(FILE *arquivo) {
fclose(arquivo);
}
void recordData(FILE *arqBin, char *nome, int matricula, int idade) {
struct Maratonista marato;
strcpy(marato.nomeMaratonista, nome);
marato.numeroCadastro = matricula;
marato.idadeMaratonista = idade;
fwrite(&marato, sizeof(struct Maratonista), 1, arqBin);
}
void recordTime(FILE *arqBinn, int tempo) {
struct Maratonista maratoT;
maratoT.tempoProva = tempo;
fwrite(&maratoT, sizeof(struct Maratonista), 10, arqBinn);
}
int main() {
system("Color 9");
setlocale(LC_ALL, "Portuguese");
int op;
int quantidadeMaratonista = 0;
struct Maratonista m;
do {
printf("1- Cadastrar maratonista\n");
printf("2- Registrar o tempo de prova do maratonista\n");
printf("3- Consultar quantidade de maratonistas\n");
printf("4- Consultar o competidor mais velho\n");
printf("5- Consultar o vencedor da prova\n");
printf("9- Sair\n");
printf("Opção: ");
scanf("%d", &op);
switch(op) {
/*Cadastramento de maratonistas*/
case 1 :
printf("Nome: ");
scanf("%s", &m.nomeMaratonista); // Apenas o primeiro nome, pois, a verificação será pela matrícula
printf("Matrícula: ");
scanf("%d", &m.numeroCadastro);
printf("Idade: ");
scanf("%d", &m.idadeMaratonista);
printf("\n");
FILE *file = openFile("dadosMaratonistas.txt", "a+b");
recordData(file, m.nomeMaratonista, m.numeroCadastro,
m.idadeMaratonista);
closeFile(file);
quantidadeMaratonista += 1;
break;
case 2 :
printf("Tempo de prova: "); // Lembrando que o tempo será em minutos
scanf("%d", &m.tempoProva);
FILE *fileTime = openFile("dadosMaratonistas.txt", "a+b");
recordTime(file, m.tempoProva);
closeFile(file);
break;
case 3 :
printf("Quantidade de maratonista: %d\n", quantidadeMaratonista);
break;
case 4 :
printf()
}
} while(op != 9);
return 0;
}