| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Argone Lt


Registrado: 23 Jun 2003Mensajes: 97Ubicación: Las Palmas.. España
|
Publicado: Mar 12 Ago, 2003 12:27 pm Asunto: Explicación de código |
|
|
Hola amig@s...bueno no tengo muy claro lo que hace un trozo del código con el que estoy trabajando....a ver si ustedes me lo pueden explicar...
El codigo lo que hace es leer de un fichero..pero lo que no me queda claro es en que forma lo almacena....y eso es lo que espero me expliquen..
Las declaraciones son las siguientes:
| Código: |
// Imagenes
char* Imagen1;
char* Imagen2;
|
La reserva de memoria la hace de esta forma...lo primero que hace es leer una cabecera dentro del archivo de un tamaño fijo donde entre otros datos se indica el numero de filas y de columnas.
| Código: |
if (( this->Imagen1 = (char *) malloc(sizeof(char)*this->NCol*this->NFilas)) == NULL) {
Eventos.Eventos("No hay memoria suficiente para procesar las imagenes");
return false;
};
if (( this->Imagen1 = (char *) malloc(sizeof(char)*this->NCol*this->NFilas)) == NULL) {
Eventos.Eventos("No hay memoria suficiente para procesar las imagenes");
return false;
|
Ahora pasamos a leer las imágenes..y esto es lo que no termino de entender..como las guarda en la variable para la que hemos reservado espacio en memoria.
| Código: |
char Aux;
for (int i = 0; i < this->NFilas ; i++) {
for (int j = 0; j < this->NCol ; j++) {
fread(&Aux , sizeof(Aux) , 1 , Archivo);
*(this->Imagen1 + (i*this->NCol) + j) = Aux;
};
for (int j = 0; j < this->NCol; j++) {
fread(&Aux , sizeof(Aux) , 1 , Archivo);
*(this->Imagen2 + (i*this->NCol) + j) = Aux;
};
};
|
Por si les sirve..una vez que termina de procesar las imagenes....los vuelve a guardar en el mismo formato de la siguiente forma
| Código: |
for (int i = 0; i < this->NFilas; i++) {
fwrite(this->Imagen1 + (i*this->NCol) , sizeof(char), this->NColCorre , Archivo);
fwrite(this->Imagen2 + (i*this->NCol) , sizeof(char), this->NColCorre , Archivo);
}; |
Bueno..espero que me puedan ayudar..desde ya muchas gracias
Argone |
|
| Volver arriba |
|
 |
Alejandro Invitado
|
Publicado: Mar 12 Ago, 2003 6:01 pm Asunto: Código |
|
|
Hola Argone:
Creo que la clave para interpretar ese fragmento de código está interpretar a Imagen1 y a Imagen2 como arrays bidimensionales de NFilas x NCol; o sea:
char Imagen1[NFilas][NCol];
char Imagen2[NFilas][NCol];
La idea es que un elemento del array bidimensional A[a0][b0] equivale a otro unidimensional, que se referenciaría como U[a0*b+b0]
Espero que te resulte útil.
Alejandro |
|
| Volver arriba |
|
 |
Eurax Cdt

Registrado: 14 Jul 2003Mensajes: 7
|
Publicado: Vie 15 Ago, 2003 3:42 am Asunto: |
|
|
Lo que dice alejandro es cierto....
tenes que tener en cuenta que por como lo almacenas en un vector unidimencional... lo debes levantar de la mismamanera...
nada mas...  _________________ Mutar porque nos parece nuevo lo que ya hemos vivido |
|
| Volver arriba |
|
 |
Argone Lt


Registrado: 23 Jun 2003Mensajes: 97Ubicación: Las Palmas.. España
|
Publicado: Lun 18 Ago, 2003 9:24 am Asunto: |
|
|
Muchas gracias..en efecto..teneis toda la razon....ya lo he probado y en efecto funciona...hasta otra
Argoen |
|
| Volver arriba |
|
 |
|