wenas!!!!! tengo ke hacer un trabajo para poder aprobarque consiste en hacer un programa para un administrar los socios de un video club ke muestre un menu con las opciones de insertar socio, listar por numero de cuenta, y buscar socio por nombre. tengo echo casi todo pero lo de los puntero y los vectores dinamicos no se me dan muy bien, la funcion de insertar me funciona bien pero cuando llamo a la funcion "visualizar" en la funcion "listar por numero", me da un ErrorRRR!!!!!
no se ke mas hacer!!!! si alguien pudiese ayudarme se lo agradeceria mucho por ke sino voy a suspender.aqui os dejo todo el codigo completo
muchisimas gracias
#include
#include
#include
#include
#define CADENA 30
#define MAX_SOCIOS 250
struct tsocios // tamaño variable
{ char *nombre;
char *apellidos;
int num_socio;
long fecha_ingreso;
long telefono;
};
struct tsocios *vsocios;
void Visualizar ( struct tsocios );
void IntroducirSocios ( struct tsocios * );
void ListarXNumero ( struct tsocios * );
void BuscarSocio ( struct tsocios * );
int Menu( void );
void main()
{ int opcion;
do{
opcion = Menu();
switch( opcion ){
case 1: IntroducirSocios ( vsocios );
break;
case 2: ListarXNumero( vsocios );
break;
case 3: BuscarSocio( vsocios );
break;
case 0: printf( "\nADIOS!!");
getchar();
break;
default: printf( "\n\nOpcion Incorrecta\n\n " );
break;
}getchar();
} while( opcion != 0 );
}
///////////////FUNCIONES////////////////
int Menu( void )
{
int opcion;
clrscr();
printf( "\n" );
printf( " CLUB DE SOCIOS\n\n\n" );
printf( "\t\t 1.INTRODUCIR SOCIOS.\n" );
printf( "\t\t 2.LISTAR POR NUMERO DE SOCIO\n" );
printf( "\t\t 3.BUSCAR SOCIO POR NOMBRE\n" );
printf( "\t\t 0.SALIR\n" );
printf( "\n\t\t\tElija una opcion: " );
scanf( "%d", &opcion );
fflush( stdin );
clrscr();
return opcion;
}
/////VISUALIZAR///// en esta es donde me el erroRR
void Visualizar( struct tsocios vsocios )
{
printf("\n Nombre: %s", vsocios.nombre );
printf("\n Apellidos: %s", vsocios.apellidos );
printf("\n Numero de socio: %d", vsocios.num_socio );
printf("\n Fecha de ingreso: %ld", vsocios.fecha_ingreso );
printf("\n Telefono: %ld", vsocios.telefono );
}
//////INTRODUCIR SOCIOS //////
void IntroducirSocios ( struct tsocios *vsocios ){
int nsocios, tam, i;
char nombre[ CADENA ];
char apellidos [ CADENA ];
printf("\n Introduzca el numero de socios a procesar: ");
scanf ("%d", &nsocios ); fflush( stdin );
vsocios =( struct tsocios *) malloc( nsocios * sizeof(struct tsocios));
// UN IF PARA KE NO SE PUEDAN INTRODUCIR MAS DE 250 SOCIOS
if ( nsocios <=MAX_SOCIOS ){
for ( i = 1; i <= nsocios; i++ )
{ printf("\n====================================\n");
printf("Nombre: \t\t");
gets ( nombre );
tam = strlen( nombre ) + 1; // para almacenar '\0'
vsocios[i].nombre = ( char *)malloc( tam * sizeof( char ));
if( tam == NULL )
printf("\n NO hay memoria suficiente ");
strcpy( vsocios[i].nombre, nombre );
printf("Apellidos: \t\t");
gets ( apellidos );
tam = strlen( apellidos ) + 1; // para almacenar '\0'
vsocios[i].apellidos = ( char *)malloc( tam * sizeof( char ));
if( tam == NULL )
printf("\n NO hay memoria suficiente ");
strcpy( vsocios[i].apellidos, apellidos );
vsocios[i].num_socio=i;
//ultimo=nsocios;
printf("NUMERO DE SOCIO ASIGNADO: %d \t\t",vsocios[i].num_socio );
printf("\nFECHA DE INGRESO \t\t");
scanf( "%l", &vsocios[i].fecha_ingreso ); fflush( stdin );
printf("TELEFONO\t\t");
scanf( "%l", &vsocios[i].telefono); fflush( stdin );
}
}
else
printf("\nERROR!!!, maximo 250 socios." );
}
/////LISTAR POR NUMERO DE SOCIO /////////
void ListarXNumero ( struct tsocios *vsocios ){
int i;
for( i=1; i<= MAX_SOCIOS; i++ ){
printf("\n\t\tLISTAR POR NUMERO DE SOCIO ");
Visualizar( vsocios[i] );
}
}
/////BUSCAR SOCIO POR NOMBRE ////////
void BuscarSocio ( struct tsocios *vsocios ){
int i;
char nombre[CADENA];
printf("\n NOMBRE DEL SOCIO A BUSCAR: ");
scanf("%d", &nombre );fflush( stdin );
for( i=1; i <= MAX_SOCIOS; i++){
if( strcmp( vsocios[i].nombre, nombre )==0)
Visualizar( vsocios[ i ] );
else
printf("\nNO EXISTE NINGUN SOCIO CON ESE NOMBRE ");
}
}