Ir para conteúdo
Fórum Script Brasil
  • 0

Danilo Reis Sorrequia

Pergunta

Boa tarde! estou com uma pequena dúvida!

Oque eu preciso? Quando eu for listar a partida do Jogador, eu só posso apresentar 1(uma) vez o nome do jogador e todas seus horários e sua pontuação!

O Código em si grava certinho os dados e lê perfeitamente! O que eu preciso ou né hora de fazer a entrada do novo nome ele verificar se o nome já existe e gravar somente horário e pontuação para aquele nome já existente no arquivo, o que acho q deve ser mais chato! Ou eu gravo o nome igual e quando for mostrar na tela, somente puxo uma vez o nome e mostro o restante(horários e pontuação)

Espero q deu para compreender o que eu preciso! Obrigado desde já pela ajuda

Esse é meu código! Obs: Ainda não esta finalizado...

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
#include <conio.h>
#define TAM 100

typedef struct{
    char nomeCompleto[TAM];
    char horaPartida[TAM];
    float pontuacao;

} tpPartida;

void registrarPartida(){
    tpPartida aux;
    FILE *arq;
    int i;

    // Limpeza do Registro - campo nomeCompleto
    for(i=0; i<TAM; i++) {
        aux.nomeCompleto = '\0';
    }

    for(i=0; i<TAM; i++) {
        aux.horaPartida = '\0';
    }

    //Cadastrando Partida.
    printf("\n\tDigite os Dados da Partida:\n");

    printf("\nDigite o nome do Jogador: ");
    fflush(stdin);
    fgets(aux.nomeCompleto, TAM - 2, stdin);
    aux.nomeCompleto[strlen(aux.nomeCompleto)-1] = '\0';

    printf("\nDigite a hora da partida: ");
    fflush(stdin);
    fgets(aux.horaPartida, TAM-2, stdin);
    aux.horaPartida[strlen(aux.horaPartida)-1] = '\0';

    printf("\nDigite a pontuação do Jogador: ");
    scanf("%f", &aux.pontuacao);

    // PARTE 02 - Gravar registro no arquivo
    arq = fopen("DB_PARTIDAS.dat", "a+");
    if(arq == NULL){
        printf("\nERRO - Não foi possível abrir o arquivo.");
    }else{
        fwrite(&aux, sizeof(tpPartida), 1, arq);

        if(ferror(arq) == 0){
            printf("\nRegistro gravado com SUCESSO");
        }else{
            printf("\nERRO - Não foi possível GRAVAR o registro no arquivo");
        }

        fclose(arq);
    }
}

void listarPartidasJogador (){
    char nomeDigitado[TAM - 2];
    FILE *arq;
    tpPartida aux;

    printf("\n\nPesquisa Jogador:");

    printf("\nDigite o nome que deseja pesquisar: ");
    fflush(stdin);
    fgets(nomeDigitado, TAM - 2, stdin);

    arq = fopen("DB_PARTIDAS.dat", "r");
    if(arq == NULL){
        printf("\nERRO - Não foi possível abrir o arquivo.");
    }else{
        fread(&aux, sizeof(tpPartida), 1, arq);
        while(!feof(arq)){
            if(ferror(arq) == 0){
                    printf("\nNome: %s - Horário: %s - Pontuação: %.2f", aux.nomeCompleto, aux.horaPartida, aux.pontuacao);
            }else{
                printf("\nERRO - Não foi possível LER o registro do arquivo");
            }
            fread(&aux, sizeof(tpPartida), 1, arq);
        }

        fclose(arq);
    }

}

int menu(){
    int opcao;

    printf("\n\tRevisão da prova\n");
    printf("\n 1. Registrar Partida");
    printf("\n 2. Listar partidas de um Jogador");
    printf("\n 3. Pesquisar melhor Jogador");
    printf("\n 4. SAIR DO PROGRAMA");
    printf("\n Ação escolhida: ");
    fflush(stdin);
    scanf("%i", &opcao);


    switch( opcao )
    {
    case 1:
            registrarPartida();
            break;

    case 2:
            listarPartidasJogador();
            break;

    case 3:
            printf("Pesquisar melhor Jogador");
            break;
    case 4:
            return 0;
    default:
            printf("Opção inválida! Pfv digite uma OPÇÃO válida");
    }
    fflush(stdin);
    getchar();
    system("cls");
    return 1;
}

int main(){
    setlocale(LC_ALL, "Portuguese");
    while(menu() == 1){

    }

return 0;
}

 

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...