Discussion:
copiar un array bidimensional en otro ?
(demasiado antiguo para responder)
Alberto
2006-06-18 14:49:14 UTC
Permalink
Tengo un array 3x4 de floats. Quiero copiarlo en otro,. Se copiarlo con
2 bucles for asi:

arr1[3][4];
arr2[3][4];

/* Quiero copiar arr1 en arr2 */

for(i=0;i<3;i++)
for(j=0;j<4;j++)
arr2[i][j]=arr1[i][j];

¿ Se puede hacer de otro forma mas sencilla ?

Gracias
Oscar Garcia
2006-06-18 19:59:19 UTC
Permalink
Post by Alberto
Tengo un array 3x4 de floats. Quiero copiarlo en otro,. Se copiarlo con
arr1[3][4];
arr2[3][4];
/* Quiero copiar arr1 en arr2 */
for(i=0;i<3;i++)
for(j=0;j<4;j++)
arr2[i][j]=arr1[i][j];
¿ Se puede hacer de otro forma mas sencilla ?
Haber.. claro que la hay:

#include <string.h>

memcpy ((void *) arr1, (void *) arr2, sizeof (arr1));
Post by Alberto
Gracias
De nada.
--
Óscar Javier García Baudet
LinaresDigital
http://redstar.linaresdigital.com/
Super_Lopez
2006-06-19 01:34:31 UTC
Permalink
Post by Oscar Garcia
memcpy ((void *) arr1, (void *) arr2, sizeof (arr1));
Juraría que debería cambiarse el orden de arr1 y arr2.

Por otro lado, aunque no es este el caso, por lo general creo que
es más recomendable el uso de memmove.

Un saludo.
Oscar Garcia
2006-06-19 07:22:05 UTC
Permalink
On Mon, 19 Jun 2006 01:34:31 +0000 (UTC), "Super_Lopez"
Post by Super_Lopez
Post by Oscar Garcia
memcpy ((void *) arr1, (void *) arr2, sizeof (arr1));
Juraría que debería cambiarse el orden de arr1 y arr2.
Exacto, lo escribí de memoria y no caí en ese detalle.
Post by Super_Lopez
Por otro lado, aunque no es este el caso, por lo general creo que
es más recomendable el uso de memmove.
Es más eficiente memcpy, pero en caso de que las zonas de memoria se
solapen es mejor usar memmove para que se realice una comprobación
adicional que decide si realiza la copia en un sentido u otro para
preservar los datos que van a ser solapados (antes de ser
sobreescritos).

En este caso se puede deducir que no habrá solapamiento de zonas de
memoria.

Siempre es bueno mostrarle todas las opciones, ventajas e
inconvenientes.

Un saludo.
--
Óscar Javier García Baudet
LinaresDigital
http://redstar.linaresdigital.com/
Loading...