#include #include #include #include "extract.h" #define N 1024 struct disc{ char discid[10]; char artist[100]; char title[100]; char genre[20]; char year[4]; int duration; //En segons }; int main(int argc, char *argv[]){ struct disc discTmp; FILE *pf; FILE *pd; int lon=0,i,*posicions,count=0,suma=0; char c,**vector; char buffer[N]={'\0'}; //Markers char seconds[]="Disc length",discid[]="DISCID",titlemark[]="DTITLE",year[]="DYEAR",genre[]="DGENRE"; posicions = (int *)malloc(1*sizeof(int)); if((pf=fopen(argv[1],"rt"))==NULL) printf("\nError"); else { while( (c=getc(pf)) != EOF){ if(c=='\n'){ //Detecto de quantes posicions consta cada linia posicions=(int *)realloc(posicions,(count+1)*sizeof(int)); posicions[count]=(ftell(pf))-suma; suma=posicions[count]+suma; count++; } } //Per prevenir l'error dels fitxers buits if(posicions[0]==0) return 1; if((pd=fopen("cds.txt", "at"))==NULL) printf("\nError"); else{ //Torno al principi fseek(pf,0,SEEK_SET); //Fico cada contacte en una posici� del vector if((vector=(char**)malloc(count*sizeof(char*)))==NULL) printf("\nError"); else{ for(i=0;i