[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