[C con Clase] Tamaño de Buffer
anonymous.mx
anonymous.mx en gmail.com
Jue Jun 3 00:27:33 CEST 2010
Muchas gracias Steven por las observaciones acertadas.
No he entrado a la etapa de depuración total del codigo, pero siempre una
buena organización desde el principio es mejor.
Soy programador empirico, me gusta hacer el codigo partiendo de una idea,
compilar y probar.
Agrego los siguiente comentarios.
_trched es tipo char con 240 posiciones (char _trched [240];), al comenzar
el codigo tuve muchos problemas para obtener un valor entero de 4 bytes o de
2 bytes, por lo que se me ocurrio hacer las 2 funciones de valores enteros
para 2 y 4 bytes. (unsigned char int2[2]; unsigned char int4[4];) (ademas
de que funcionara tanto en windows, linux y solaris)
int entero2(unsigned char* s)
{
int ret;
ret = s[0] * 256;
ret = ret + s[1];
if (ret>32767) ret = ret - 65536;
return ret;
}
long int entero4(unsigned char* s)
{
long int ret;
ret = s[0] * 16777216;
ret = ret + s[1] * 65536;
ret = ret + s[2] * 256;
ret = ret + s[3];
if (ret>2147483647) ret = ret - 2147483646;
return ret;
}
Cuando se realiza el fread la variable _trched obtiene 240 bytes del archivo
en la posicion que indica el for.
Entonces desde la posicion 17-1 hasta 17+2 se encuentra el valor entero de 4
bytes que quiero leer y comparar contra la variable SP, si la traza tiene el
valor del SP procedo a grabar la traza completa en nuevo archivo.
Por lo que me tiene intrigado estas instrucciones que me comentaste.
entero4( &_trched[17-1] )
O de su forma equivalente:
entero4( _trched + 17-1 )
Saludos desde Villahermosa, Tabasco, Mexico, America, Tierra.
José Luis
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20100602/814dfd6c/attachment.html>
Más información sobre la lista de distribución Cconclase