I'm doing a job that lists players and performs some functions using File
in language C and I need the program to list in option 2 the player by name and in 3 by the shirt number.
My code so far:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
typedef struct {
int camisa;
char pais [20];
char posicao [20];
char nome [20];
}COPA;
COPA jogador;
FILE *p_jogador;
void abre_arquivo(){
p_jogador=fopen ("copa.dat","a+b");
}
void mostrarcamisa(){
printf("\n %s %d",
jogador.nome, jogador.camisa);
}
void listarcamisa(){
rewind(p_jogador);
do{
fread(&jogador,sizeof(COPA),1,p_jogador);
if(feof(p_jogador)==0) mostrarcamisa();
}while(feof(p_jogador)==0);
getch();
}
void cadastrar(){
int continuar=1;
do {
system("cls");
printf(" Cadastrar jogadores ");
printf("\n Nome do jogador: ");
scanf("%s",&jogador.nome);
printf("\n Pais de origem: ");
scanf("%s", &jogador.pais);
printf("\n Posicao do jogador: ");
scanf("%s", &jogador.posicao);
printf("\n Numero da camisa: ");
scanf("%d", &jogador.camisa);
fseek(p_jogador,0, SEEK_END);
fwrite (&jogador, sizeof(COPA), 1,p_jogador);
printf("\n Sucesso. Quer continuar? 1- sim 2 -nao\n");
scanf ("%d", &continuar);
}while (continuar==1);
}
void mostrarnome(){
printf("\n %s",
jogador.nome);
}
void listarnome(){
rewind(p_jogador);
do{
fread(&jogador,sizeof(COPA),1,p_jogador);
if(feof(p_jogador)==0) mostrarnome();
}while(feof(p_jogador)==0);
getch();
}
main(){
int op=1;
abre_arquivo();
do {
system("cls");
printf("MENU");
printf("\n 1 - Cadastrar jogador");
printf("\n 2 - Listar jogadores por nome");
printf("\n 3 - Listar pela camisa");
printf("\n 4 - Sair");
scanf("%d",&op);
switch(op)
{
case 1: cadastrar();
break;
case 2: listarnome();
break;
case 3: listarcamisa();
break;
case 4: printf("\n Adeus e rumo ao HEXA");
break;
default: printf("Erro");
break;
}
}while(op!=4);
fclose(p_jogador);
}