[C con Clase] Tamaño de Buffer

Steven Davidson srd4121 en njit.edu
Mie Jun 2 19:07:11 CEST 2010


Hola "anonymous" y Moisés,

Moises Brenes wrote:
> 2010/6/2 anonymous.mx <anonymous.mx en gmail.com>:
>>     unsigned char buffer[2048]; // <<== El tamaño quiero tomarlo como parametro para no volver a comiplar el programa.
> 
> Reservando memoria dinamicamente:
> 

Correcto.

> #include <stdlib.h>
> 
> ...
> 
> unsigned char *buffer = (char *)malloc(sizeof(char) * argv[3] /*
> Claro, aqui tendras que validar este parametro, que sea un entero
> valido */ );
> 

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,

long int nCant = atol( argv[3] );

unsigned char *buffer = (unsigned char *) malloc( nCant );

No es necesario indicar 'sizeof(char)', porque 'char' siempre ocupa 1 byte.


Ahora, la sintaxis correcta para ejecutar este programa será:
copia <fichero_origen> <fichero_destino> <tamaño_búfer>

Obviamente, puedes cambiar la sintaxis a como te guste que sea, pero el 
código anterior te servirá de ejemplo.


Espero haber aclarado la duda,

Steven





Más información sobre la lista de distribución Cconclase