[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