Copiar un char a otro char en C++

Introduccion a memcpy en c++

Si intentamos copiar el texto de (supongamos) variable1 a variable2 con ayuda del operador de asignación como en otros lenguajes por ejemplo

char variable1[30] = "Adios mundo";
char variable2 [30];
variable2 = variable1;


Nos daremos cuenta que el compilador nos lanza el error "error: invalid array assignment" pues existe un intento erróneo de asignar datos de una variable a otra, esto se debe a que al usar char y pese a que este tipo de datos son un arreglo como cualquier otro, no podemos asignarle texto de esta manera sino que la manera correcta es haciendo uso de una función contenida en la librería cstring llamada memcpy; (memory copy) copiara cada valor del segundo arreglo tipo char a la variable del primero veamos un ejemplo sencillo.

Ejemplo de memcpy en C++



#include <cstdlib> /* Aquí contiene la función system("pause"); */
#include <iostream> /* Importamos esta librería para hacer uso de cout y así ver el resultado en pantalla. */
#include <cstring>
using namespace std;

int main()
{
char texto1[20] = "Adios mundo";
char texto2[20];

memcpy(texto2, texto1, 12); /* Esta función tiene 3 parámetros, separamos cada uno por comas, la primer variable obtendrá los datos de la segunda variable*/

cout << "El texto 2 es " << texto2 << endl;

system("pause");
return 0;
}


Resultado de ejemplo de memcpy en C++ para copiar un char

Quizá se pregunte porque en el tercer parámetro dice 12, en ese tercer parámetro siempre indicaremos la cantidad de caracteres que queremos copiar en la variable, si hubiese puesto 2 solo se hubiesen copiado 2 caracteres. Ha de preguntarse ¿y si no conozco el tamaño del texto?, puesto que quizá el texto provenga de algún documento desconocido o también puede ser texto ingresado por un usuario, bien en este caso resolvemos este problema con la función strlen(), se usa de la siguiente forma.

memcpy(texto2, texto1, strlen(texto1)+1);


Fácil verdad?, esta función básicamente nos devuelve el el tamaño de una variable en este caso de la variable texto1, le agregamos + 1 al final porque es necesario recordar que todo char mantiene 1 byte con el carácter nulo '\0', si no entiende esta parte muy bien la recomendación es que pase a estudiar la explicación del tipo de variables char en C++.

Con estas 2 funciones ya conoce como igualar el contenido de un char en otro, ademas ya sabe que la función strlen(); le permitirá conocer la cnatidad de caracteres contenidos en alguna variable, a futuro puede necesitar este dato para otros fines.
Comentarios y preguntas