estoy haciendo un programa con estructuras. El cual registra empleados por nombre, apellido materno, paterno, codigoID y contraseña. todo esto en un menu. El problema es que cuando declaro este menu como una funcion por si sola sin el demas contenido del programa funciona perfectamente, pero a la hora de unirla al programa entero meda el error de (subscripted worth is neither array nor pointer nor vector). tambien intente usare el codigo de esta funcion como tal en el programa(sin declarar como funcion), dandome el mismo resultado. Depues al hacer la union coloque el puntero a mi indice ahora dandome este error (request for member ******** in one thing not a construction or union).Tambien intente usar ->, pero o no supe como declararlo, o creo que solo sirve con enteros. Nostril que mas pueda ser aqui el codigo.
struct menu
{
char IDempleado[50], nombre[51],origiN[50],apellidop[50],origiP[50],apellidom[50],origiM[50],contrasena[51];
}x[MAX];
void menuG(int argc, char *argv[])
{
system("COLOR F0"); //FUNCION PARA CAMBIO DE COLOR
int menu1,x;
char *gerent="gerente",*contraG="1212",usuario[20];
int
submenu,capturado=0,*indice=0,i,encontrado,n=0,datmodifica,modifica;
char contra[20],buscar[20],retry='r';
char num[50]={'1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31','32','33','34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49','50'};
whereas (retry=='r'||'R')
{
do
{
printf("nnttt***BIENVENIDO GERENTE***n");
printf("nnt-Menu para gerente. Aqui se puede dar de alta a los empleados-nn");
printf("t1.Nuevo nnt2.Mostrar todos nnt3.Buscar por codigo (IDempleado) nnt4.Bucar por apellido paterno(Clientes y/o socios) nnt5.Modificar nnt6.Eliminar nnt7.Reportes nnt8.Cambiar de usuarionn");
scanf("%d",&submenu);
swap(submenu)
{
case 1:if (capturado==MAX)
{
printf("nYa se lleno la base de datosn");
}
else
{
*contra=0;
n++;
printf("nntt **HA SELECCIONADO, NUEVO EMPLEADO**nn");
getch();
printf("nIntroduzca nombre del empleado: ",i+1);
scanf ("%s",x[indice].nombre);
printf("nIntroduzca 1er apellido: ");
scanf ("%s",x[indice].apellidop);
printf("nIntroduzca 2do apellido: ");
scanf ("%s",x[indice].apellidom);
printf("nnAhora digite el codigo ID (Preferencia numeros): ");
scanf ("%s",x[indice].IDempleado);
strcpy(x[indice].origiN,x[indice].nombre); //
strcpy(x[indice].origiP,x[indice].apellidop); //creamos las variables origi para guarfar los nombres y apellidos originales copiandolos en el mismo lugar con strcpy
strcpy(x[indice].origiM,x[indice].apellidom); //
strncat(contra,x[indice].nombre,1); //
strncat(contra,x[indice].apellidop,1); //aqui tomamos el perimer caracter de cada nombre y apellido y le adjutamos un numero aleatorio
strncat(contra,x[indice].apellidom,1);
strncat(contra,num,n); //
strcpy(x[indice].contrasena,contra); //aqui copiamos de la cadena contra a la varibale de contrasena para ir guardando las mismas
printf("nnSu contraseña es: %s",x[indice].contrasena); //aqui se muentra la contraseña generada
printf("nSu IDempleado es: %s",x[indice].IDempleado); //el ID puesto con anterioridad
indice++;
capturado++;
}
el error me lo a partir de aqui, en el scanf de nombre.
printf("nIntroduzca nombre del empleado: ",i+1);
scanf ("%s",x[indice].nombre);
printf("nIntroduzca 1er apellido: ");
scanf ("%s",x[indice].apellidop);
printf("nIntroduzca 2do apellido: ");
scanf ("%s",x[indice].apellidom);
printf("nnAhora digite el codigo ID (Preferencia numeros): ");
scanf ("%s",x[indice].IDempleado);
si alguien me puede ayudar se lo agredeceria he estado atorado algunos dias en esto.