Merge pull request #10 from axell-brendow/feature/add-jogador-struct
Add Jogador struct
This commit is contained in:
commit
2ec0e2997c
|
|
@ -0,0 +1,93 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void tirarQuebraDeLinha(char linha[]) {
|
||||
int tam = strlen(linha);
|
||||
|
||||
if (linha[tam - 2] == '\r' && linha[tam - 1] == '\n') // Linha do Windows
|
||||
linha[tam - 2] = '\0'; // Apaga a linha
|
||||
|
||||
else if (linha[tam - 1] == '\r' || linha[tam - 1] == '\n') // Mac ou Linux
|
||||
linha[tam - 1] = '\0'; // Apaga a linha
|
||||
}
|
||||
|
||||
/**
|
||||
* @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];
|
||||
tirarQuebraDeLinha(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;
|
||||
strcpy(retorno.nome, jogador->nome);
|
||||
retorno.altura = jogador->altura;
|
||||
retorno.peso = jogador->peso;
|
||||
strcpy(retorno.anoNascimento, jogador->anoNascimento);
|
||||
strcpy(retorno.universidade, jogador->universidade);
|
||||
strcpy(retorno.cidadeNascimento, jogador->cidadeNascimento);
|
||||
strcpy(retorno.estadoNascimento, jogador->estadoNascimento);
|
||||
|
||||
return retorno;
|
||||
}
|
||||
Loading…
Reference in New Issue