Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * main.c
- *
- * Created on: 9 de Jan de 2012
- * Author: tiago
- */
- #include <stdio.h>
- #include "lapr3.h"
- #include <string.h>
- #include <stdlib.h>
- typedef struct
- {
- int num;
- char nome[100];
- int categorias;
- } Funcionario;
- void carregaCategoriasAnteriores(Funcionario *ptrFuncionario, char *array);
- void carregaCategoriaActual(Funcionario *ptrFuncionario,char *array);
- int leFicheiro(char *filename,Funcionario *ptrFuncionario, int size);
- int leFicheiro(char *filename, Funcionario *ptrFuncionario, int size)
- {
- int count=0;
- FILE *ficheiro = fopen(filename,"r");
- if(ficheiro!=NULL)
- {
- int aux=0;
- char linha[128];
- char charAux[3]={0,0,0};
- while ( fgets ( linha, sizeof linha, ficheiro ) != NULL )
- {
- while(aux<4)
- {
- if(count == size)
- {
- size+=15;
- ptrFuncionario=(Funcionario*) realloc(ptrFuncionario,(size*sizeof(Funcionario)));
- }
- switch (aux)
- {
- case 0 : strcpy(charAux,strtok(linha, "," ));
- (ptrFuncionario+count)->num=atoi(charAux);
- break;
- case 1 : strcpy((ptrFuncionario+count)->nome,strtok(NULL, ","));
- break;
- case 2 : strcpy(charAux,strtok(NULL, "," ));
- carregaCategoriaActual((ptrFuncionario+count),charAux);
- break;
- case 3 : carregaCategoriasAnteriores((ptrFuncionario+count),strtok(NULL,","));
- break;
- }
- aux++;
- }
- aux=0;
- count++;
- }
- fclose ( ficheiro );
- }
- return count;
- }
- void carregaCategoriasAnteriores(Funcionario *ptrFuncionario, char *array)
- {
- int size=5;
- int *arrayCategorias = NULL;
- int i=0,j=0;
- arrayCategorias=(int*) malloc(size*sizeof(int));
- i=0;
- while(array[i]!='\n')
- {
- if(array[i]!='-')
- {
- *(arrayCategorias+j)=(array[i]-48);
- j++;
- i++;
- }else
- {
- i=i+2;
- }
- }
- int k,l,aux=1;
- for(k=0;k<j;k++)
- {
- for(l=1;l<(*(arrayCategorias+k)) && (*(arrayCategorias+k))!=1;l++)
- {
- aux=aux<<1;
- }
- ptrFuncionario->categorias=ptrFuncionario->categorias | aux;
- aux=1;
- }
- free(arrayCategorias);
- }
- void carregaCategoriaActual(Funcionario *ptrFuncionario, char *array)
- {
- ptrFuncionario->categorias=1;
- ptrFuncionario->categorias=ptrFuncionario->categorias<<(atoi(array)-1);
- }
- int main()
- {
- int size=3;
- Funcionario *ptrFuncionario, funcionarios[size];
- char ficheiro[]="/home/tiago/Dropbox/LAPR III 1112/P4.2/LAPR3/dados.csv";
- char *ptrFicheiro;
- ptrFicheiro=ficheiro;
- ptrFuncionario=funcionarios;
- leFicheiro(ptrFicheiro,ptrFuncionario,size);
- int i;
- for(i=0;i<3;i++)
- {
- printf("Numero: %d\nNome: %s\nCategorias: %d\n\n",ptrFuncionario[i].num,ptrFuncionario[i].nome,ptrFuncionario[i].categorias);
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment