From 6c08ae3c329e596af17927442b56d84b4d110adc Mon Sep 17 00:00:00 2001 From: axell-brendow Date: Thu, 1 Oct 2020 15:10:01 -0300 Subject: [PATCH] Add Jogador struct --- tps/fonte/jogador.c | 81 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 tps/fonte/jogador.c diff --git a/tps/fonte/jogador.c b/tps/fonte/jogador.c new file mode 100644 index 0000000..c3feae2 --- /dev/null +++ b/tps/fonte/jogador.c @@ -0,0 +1,81 @@ +#include +#include +#include + +#define TAM_MAX_LINHA 250 + +typedef struct { + int id; + int peso; + int altura; + char nome[70]; + char universidade[70]; + char anoNascimento[7]; + char cidadeNascimento[70]; + char estadoNascimento[70]; +} Jogador; + +/** + * Se linha = "65,Joe Graboski,201,88,,1930,," + * então + * novaLinha = "65,Joe Graboski,201,88,nao informado,1930,nao informado,nao informado" + * + * @param linha String com a linha do CSV. + * @param novaLinha String que receberá uma nova linha com os campos vazios + * preenchidos. + */ +void inserirNaoInformado(char *linha, char *novaLinha) { + int tam = strlen(linha); + for (int i = 0; i <= tam; i++, linha++) { + *novaLinha++ = *linha; + if (*linha == ',' && (*(linha + 1) == ',' || *(linha + 1) == '\0')) { + strcpy(novaLinha, "nao informado"); + novaLinha += strlen("nao informado"); + } + } +} + +/** + * @param jogador Ponteiro para o jogador a receber os dados + * @param linha Linha do CSV. Ex.: "65,Joe Graboski,201,88,,1930,," + */ +void ler(Jogador *jogador, char linha[]) { + char novaLinha[TAM_MAX_LINHA]; + inserirNaoInformado(linha, novaLinha); + + jogador->id = atoi(strtok(novaLinha, ",")); + strcpy(jogador->nome, strtok(NULL, ",")); + jogador->altura = atoi(strtok(NULL, ",")); + jogador->peso = atoi(strtok(NULL, ",")); + strcpy(jogador->universidade, strtok(NULL, ",")); + strcpy(jogador->anoNascimento, strtok(NULL, ",")); + strcpy(jogador->cidadeNascimento, strtok(NULL, ",")); + strcpy(jogador->estadoNascimento, strtok(NULL, ",")); +} + +void imprimir(Jogador *jogador) { + printf("[%d ## %s ## %d ## %d ## %s ## %s ## %s ## %s]\n", + jogador->id, + jogador->nome, + jogador->altura, + jogador->peso, + jogador->anoNascimento, + jogador->universidade, + jogador->cidadeNascimento, + jogador->estadoNascimento + ); +} + +Jogador clone(Jogador *jogador) { + Jogador retorno; + + retorno.id = jogador->id; + retorno.peso = jogador->peso; + retorno.altura = jogador->altura; + strcpy(retorno.nome, jogador->nome); + strcpy(retorno.universidade, jogador->universidade); + strcpy(retorno.cidadeNascimento, jogador->cidadeNascimento); + strcpy(retorno.estadoNascimento, jogador->estadoNascimento); + + return retorno; +}