Hola, estoy aqui programando, y buffff me da un Segmentation fault. Tamos con el tema punteros, y no encuentro por ninguna lado el error, debe ser una chorrada, lo supongo...
Me falla solo la primera funcion, el resto no. A ver si me podeis ayudar.
Este es el codigo:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
char *titol;
int platea;
int amfiteatre;
int galliner;
}Obra;
Obra * DemamaMemoriaIOmple(FILE *f, int *q){
Obra *T;
int num,i,entrades;
char zona,aux;
char nomo[50];
fscanf(f,"%d",q);
T=(Obra *)malloc(sizeof(Obra)*num);
fgets(nomo,50,f);
nomo[strlen(nomo)-1]='\0';
T[0].titol=(char *)malloc(sizeof(char)*strlen(nomo));
if(T[0].titol==NULL){
printf("Error al demanar espai per al titol.");
}else{
fscanf(f,"%d",&entrades);
fscanf(f,"%c",&aux);
fscanf(f,"%c",&zona);
if(zona=='A'){
T[0].amfiteatre=T[0].amfiteatre+entrades;
}else{
if(zona=='P'){
T[0].platea=T[0].platea+entrades;
}else{
T[0].galliner=T[0].galliner+entrades;
}
}
fgets(nomo,50,f);
while(!feof(f)){
nomo[strlen(nomo)-1]='\0';
for(i=1;i<num;i++){
if(strcmp(T[i].titol,nomo)!=0){
T[i].titol=(char *)malloc(sizeof(char)*strlen(nomo));
strcpy(T[i].titol,nomo);
}
}
fscanf(f,"%d",&entrades);
fscanf(f,"%c",&aux);
fscanf(f,"%c",&zona);
if(zona=='A'){
T[i].amfiteatre=T[i].amfiteatre+entrades;
}else{
if(zona=='P'){
T[i].platea=T[i].platea+entrades;
}else{
T[i].galliner=T[i].galliner+entrades;
}
}
fgets(nomo,50,f);
}
}
}
}
void ConsultaLocalitats(Obra *T, int q){
int i;
char noma[30];
printf ("Nom de l'obra? ");
gets (noma);
for(i=0;i<q;i++){
if (strcmp(noma,T[i].titol)==0){
printf("Reserves a Platea: %d\n",&T[i].platea);
printf("REserves a Amfiteatre: %d\n",&T[i].amfiteatre);
printf("Reserves a Galliner: %d\n",&T[i].galliner);
}
}
}
void AlliberaMemoria(Obra *T, int q){
int i;
for(i=0;i<q;i++){
free(T.titol);
}
free ;
T=NULL;
}
void main () {
Obra *T;
FILE *f;
int q;
f=fopen("servicaixa","r");
if (f==NULL) {
printf("Ni hi ha ServiCaixa!\n");
}else {
T=DemamaMemoriaIOmple(f,&q);
ConsultaLocalitats(T,q);
AlliberaMemoria(&T,q);
fclose(f);
}
}
GRACIAS