• Viernes 8 de Noviembre de 2024, 14:35

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - telecoAST

Páginas: [1]
1
C/C++ / Vector De Punteros A Funcion De Forma Dinamica
« en: Martes 27 de Mayo de 2008, 18:41 »
Hola,
quisiera crear un vector de punteros a funcion de forma dinamica. Yo tengo un vector de punteros a funcion en el que he incluido ya todas las funciones que poseeo (vector master por asi decirlo), la idea es crear otro vector (de forma dinamica) y copiar las funciones que quiero que se realicen desde el vector master.

void (* func[7])(void *)={fun1, fun2,......,fun7};
void (*vectorDinamico)(void *);

vectorDinamico=........malloc(); // no tengo ni idea de como se hace.

vectorDinamico[0]=*func[3]; //algo asi para copiar desde el otro

Si pudierais ayudarme me hariais un gran favor. Gracias de antemano.

2
C/C++ / Re: Lectura De Estructuras De Archivo Binario
« en: Lunes 19 de Mayo de 2008, 16:56 »
Ok, todo resuelto, el codigo que he posteado antes sería correcto declarando:

void ** estructuras;

Asi estructuras seria un puntero que apunta al comiendo de un vector que contiene punteros a void (los cuales tienen reservada la memoria correspondiente a su estructura, sin saber exactamente cual es).

Muchas gracias, cuando me has dicho lo de reserva de memoria dinamica me as conducido a observar el error, muchas gracias.

3
C/C++ / Re: Lectura De Estructuras De Archivo Binario
« en: Lunes 19 de Mayo de 2008, 16:50 »
Hola,
lo de que si se el tipo de estructura y numero de ellas si que tengo claro como se hace

     estruct=(void *)malloc(sizeof(struct s_sos));
     fread ((struct s_sos *)estruct, sizeof(struct s_sos), 1, fich);

Este trozo de codigo es de una prueba que hice. El problema que tengo reside precisamente en que no se de que tipo son las estructuras que leo. El numero de ellas si lo se, ademas tambien se el tamaño de cada una de ellas (antes de leer las estructuras leo un vector el cual incluye los tamaños de todas:
    tamEstruct[0]=sizeof(struct left);
    tamEstruct[1]=sizeof(struct proc1);
    tamEstruct[2]=sizeof(struct proc1);
    tamEstruct[3]=sizeof(struct combinador);  
    fwrite(&tamEstruct[0], sizeof(struct left), 1, fich1);
    fwrite(&tamEstruct[1], sizeof(struct proc1), 1, fich1);
    fwrite(&tamEstruct[2], sizeof(struct proc1), 1, fich1);                    
    fwrite(&tamEstruct[3], sizeof(struct combinador), 1, fich1);  )


Para leer deberia hacer entonces segun me dices de reservar memoria algo parecido a:

for(i=0;i<numBloques;i++){
    *(estructuras+i)=malloc(*(tamEstruct+i)); // Aqui es cuando reservo la memoria
    fread (*(estructuras+i), *(tamEstruct+i), 1, fich);                
}    

No?

4
C/C++ / Lectura De Estructuras De Archivo Binario
« en: Lunes 19 de Mayo de 2008, 15:53 »
Hola, antes que nada quisiera presentarme. Me llamo Antonio, soy un estudiante de Telecomunicaciones que está realizando su proyecto fin de carrera. Un saludo a todos.

Ahora viene mi cuestion. Pues resulta que tengo que trabajar con un fichero binario en el cual tengo que almacenar una serie de estructuras. El problema lo tengo en la lectura, ya que a priori no se que tipo de estructuras tengo que leer(digamos que en la escritura del fichero no siempre es igual, y dependiendo de diversas variables, puedo escribir estructuras distintas en numero y tipo). Lo que tenia pensado era, antes de mandar las estructuras, hacerme un vector donde indicara el tamaño de cada una y luego leerla en un vector de punteros a void.


void * estructuras;
int * tamEstruct;
...

// Leemos el vector q contiene el tamaño de cada una de las estuct. a leer
for(i=0;i<numBloques;i++)
fread ((tamEstruct+i), sizeof(int), 1, fich);
// Quinto parametro a leer = Estructuras
for(i=0;i<numBloques;i++)
fread ((estructuras+i), *(tamEstruct+i), 1, fich); <<<< error

>>>>> "ficheros.c", line 250: error: expression must be a pointer to a complete object type

No se si me habre explicado bien, pero espero que me pregunteis si no queda claro y yo poco a poco intente explicarlo mejor, y haber si puedo resolver este problema. Os estare eternamente agradecido por vuestra ayuda.

Páginas: [1]