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...
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");
}
Pergunta
Danilo Reis Sorrequia
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
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.