[C con Clase] Tamaño de Buffer
anonymous.mx
anonymous.mx en gmail.com
Mie Jun 2 19:57:45 CEST 2010
Moises y Steven, gracias por la aportación.
Anexo el extracto del codigo. (no lo he compilado porque tenemos un pequeño
problema con el filesystem en donde se encuentran lo datos).
tamanio = getfilesize(f1);
fseeko64 (f1, 3200+17-1, SEEK_SET);
fread (&int2, sizeof(int2), 1, f1);
_si = entero2(int2)/1000000.;
fseeko64 (f1, 3200+21-1, SEEK_SET);
fread (&int2, sizeof(int2), 1, f1);
_nsmp = entero2(int2);
fseeko64 (f1, 3200+25-1, SEEK_SET);
fread (&int2, sizeof(int2), 1, f1);
_frmt = entero2(int2);
if (_frmt==3) _smpl=2;
else if(_frmt==6) _smpl=1;
else _smpl=4;
// Tama#o de la traza (bytes)
_trl = 240+_nsmp*_smpl;
// Numero de trazas
_ntr=(tamanio-3600)/(_trl);
//Crear el buffer
unsigned char *_buffer = (unsigned char *) malloc( _ntr );
// Escribir el encabezado del SEGY
fseeko64 (f1, 0, SEEK_SET);
bytesLeidos = fread(_binhed, 1, sizeof(_binhed), f1);
fwrite(_binhed, 1, bytesLeidos, fs);
for (n=1;n<=_ntr;n++)
{
fseeko64 (f1, 3600+((n-1)*_trl), SEEK_SET);
fread (&_trched, sizeof(_trched), 1, f1);
int4[0]=_trched[17-1];
int4[1]=_trched[17-0];
int4[2]=_trched[17+1];
int4[3]=_trched[17+2];
// Grabar el dato si el SP corresponde con el indicado en parametros.
if (SP==entero4(int4))
{
fseeko64 (f1, 3600+((n-1)*_trl), SEEK_SET);
bytesLeidos = fread(_buffer, 1, sizeof(_buffer), f1);
fwrite(_buffer, 1, bytesLeidos, fs);
}
}
// Liberar el buffer
free( _buffer );
/* Cerramos el fichero */
fclose(f1);
fclose(fs);
Saludos desde Villahermosa, Tabasco, Mexico, America, Tierra.
José Luis
2010/6/2 Moises Brenes <moises.brenes en gmail.com>
> 2010/6/2 Steven Davidson <srd4121 en njit.edu>:
> > Hola "anonymous" y Moisés,
>
> > Esto no es correcto. Ten presente que "anonymous" quiere que la cantidad,
> > que será un número entero, se pase como parámetro. Sin embargo, los
> > parámetros del programa son cadenas de caracteres. Por lo tanto, lo que
> se
> > tendría que hacer es convertir la cadena a un número entero y luego usar
> ese
> > número como la cantidad de elementos del "búfer". Esto es,
>
> Si, me falto ser mas claro, y no obviar que se debe convertir
>
> >
> > Espero haber aclarado la duda,
> >
> > Steven
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20100602/ad927990/attachment-0001.html>
Más información sobre la lista de distribución Cconclase