Hola,
Tambien puede ser que en la funcion visualizar de Mithrandir tengas que usar . en lugar de -> . Estoy un poco oxidado, pero creo recordar que -> es para punteros a la estructura y . para la estructura. Si datos[i] es una estructura, deberia ser . (creo). Asi:
Código:
void visualizar(struct trabajador *datos)
{
int i;
for(i=0;i<20;i++){
printf("Nombre: %s",datos[i].nombre);
printf("\nApellidos: %s",datos[i].apellidos);
printf("\nEdad: %d",datos[i].edad);
printf("\nPuesto: %s",datos[i].puesto);
}
}
Por cierto, siempre que te de un mensaje de error, ponlo en el mensaje e indica la linea en la que te lo da.
Saludos.