[C con Clase] Duda que me está volviendo loco

Hl3 halowin3 en gmail.com
Lun Ene 11 21:04:26 CET 2016


En este código:

char *hijos(int x){
	char *lista="No encuentro esa persona";
	FILE *fp;
	struct miembro ente;
	
	//abro el fichas.dat
	if( (fp=fopen("fichas.dat","rb"))==NULL){
		puts("No puedo abrir FICHAS.DAT");
		exit(1);
	}
	//busco hijos de x
	while(!feof(fp)){	
		fread(&ente,sizeof(struct miembro),1,fp);
		if( (ente.idp == x) || (ente.idm == x) ){
			lista = ente.nombre; 
			printf("ente.nombre: %s   lista: %s\n", ente.nombre,lista );//ok
		}
	}
	close(fp);
	printf("Envio lista = %s\n",lista );
	return lista;
}



El valor de "lista" dentro del bucle "while" es correcto, pero el valor que pinta en el printf que hay despues del "close(fp)" no tiene nada que ver con el valor real.

!!!!!   ?????    !!!!!!


Más información sobre la lista de distribución Cconclase