[C con Clase] Array de caracteres
Kriptus
kriptus en gmail.com
Dom Abr 13 22:47:01 CEST 2014
Hola,
Bueno, no sé si es correcto pasa el código.. pero bueno, lo he estado
mirando y a ver si esto
te sirve.
#include <cstdlib>
#include <iostream>
#include <cstring>
using namespace std;
void copicad( char [], const char []);
int main(int argc, char** argv) {
char origen [] = "Leones, tigres, ardillas, sapos";
char *destino = "Leones, tigres,";
cout << "--origen-- " << origen << " " << "--destino-- " << destino <<
endl;
destino=new char[sizeof(origen)];
copicad(destino, origen);
cout << "--origen-- " << origen << " " << "--destino-- " << destino <<
endl;
cout<<"\n\npulsa una tecla."<<endl;
cin.ignore();
return 0;
}
void copicad(char destino[], const char origen[])
{
int i = 0;
while ((destino[i] = origen[i]) != '\0')
{
i++;
}
}
El 13 de abril de 2014, 22:02, Samuel Díaz García
<samueldg en arcoscom.com>escribió:
> Al final has sobreescrito los primeros caracteres d destino.
>
> Eso es así porque los tienes definido en pila y origen se define tras
> destino. Ambos array con el tamaño justo de las cadenas.
>
> Usar el const en la definicion de la función ayudaria al compilador a
> proteger la variable, aunque el error te daría en ejecución.
>
> Salu2
>
> Samuel Díaz García
> El 13/04/2014 20:29, "Marving" <jr.marving en gmail.com> escribió:
>
> Hola a todos.
>> De nuevo por aquí con cuestiones de novatos.
>> El programa es bastante sencillo, pero no lo suficiente para mi.
>> Copia una array en otra.
>> El origen no debería cambiar y el destino tendría que ser una copia del
>> origen.
>> Pero tras esta copia el origen pierde un numero
>> de caracteres, igual a la longitud que tenia en un principio la cadena
>> de destino.
>>
>>
>> #include <cstdlib>
>> #include <iostream>
>> #include <cstring>
>>
>> using namespace std;
>>
>> void copicad(char [], char []);
>>
>> int main(int argc, char** argv) {
>>
>> char origen [] = "Leones, tigres, ardillas, sapos";
>> char destino [] = "Leones, tigres,";
>>
>> cout << "--origen-- " << origen << " " << "--destino-- " << destino
>> << endl;
>> copicad(destino, origen);
>> cout << "--origen-- " << origen << " " << "--destino-- " << destino
>> << endl;
>>
>> cin.ignore();
>> cin.get();
>> return 0;
>> }
>>
>> void copicad(char destino[], char origen[])
>> {
>> int i = 0;
>> while ((destino[i] = origen[i]) != '\0')
>> {
>> i++;
>> }
>> }
>>
>> output
>> --origen-- Leones, tigres, ardillas, sapos --destino-- Leones, tigres,
>> --origen-- ardillas, sapos --destino-- Leones, tigres, ardillas, sapos
>> _______________________________________________
>> Lista de correo Cconclase Cconclase en listas.conclase.net
>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
--
Un saludo.
http://www.kriptus.com
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20140413/a3983bd8/attachment.html>
Más información sobre la lista de distribución Cconclase