CUESTIÓN
¿Qué falla en el siguiente código?
read
sólo me lee 4 caracteres:
char *buffer;
[...]
buffer=malloc(256);
[...]
read(0,buffer,sizeof(buffer));
SOLUCIÓN
sizeof
en el read
está devolviendo lo que ocupa
en memoria
la variable buffer
que, al ser un puntero, ocupa
cuatro bytes en una máquina de 32 bits. No existe una manera
estándar de saber el espacio de
memoria dinámica que hemos reservado al que apunta un puntero.
Se podría hacer algo del estilo a esto:
char *buffer;
int tambuffer=256;
[...]
buffer=malloc(tambuffer);
[...]
read(0,buffer,tambuffer);
Si reserváis la memoria de modo estático, sí
podéis usar sizeof
para saber el tamaño del array:
char buffer[256];
[...]
read(0,buffer,sizeof(buffer));
© 2000 Guillermo González Talaván.