Pesquisar na Comunidade
Mostrando resultados para as tags ''mostrar apenas 1 vez o dado nome''.
Encontrado 1 registro
-
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; }