Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Micah Genji en 19 Mayo 2010, 10:47 am



Título: copiar cadenas c++
Publicado por: Micah Genji en 19 Mayo 2010, 10:47 am
Hola a todos resulta que estoy tocando este tema, y ando confuso creo q es mas la algoritmia q no me funciona o mal diseñada, pero tambein tengo dudas de como usar el c++.

quiero copiar de la cadena v2 a v1:

Código
  1. #include<iostream.h>
  2. #define MAX 100
  3. void main(void){
  4.   char v1[MAX],v2[MAX],aux[MAX];
  5.   int n;
  6.  
  7.   do{
  8.   cout<<"\n\nCuantas palabras ingresaras: ";
  9.   cin>>n;
  10.   }while (n<=0 || n>MAX);
  11.  
  12.   for(int i=0; i<n ; i++){
  13.   cin.ignore();
  14.   cout<<"\n"<<i<<". Ingrese una palabra cualquiera: ";
  15.      cin.getline(v2,n);
  16.      cin>>v2[i];
  17.      aux[MAX]=v2[i];
  18.      v1[i]=aux[MAX];
  19.      }
  20.  
  21.   for(int i=0; i<=n ;i++){
  22.   cout<<"\n "<<v1[i];
  23.      }
  24.  
  25. cin.get();
  26. }

Cual es la manera correcta de hacer uso de cadenas?

saludos :)


Título: Re: copiar cadenas c++
Publicado por: h0oke en 19 Mayo 2010, 12:10 pm
Puedes utilizar punteros? Sean p1 y p2 punteros a una cadena:

Código
  1. for(;*p1 = *p2; p1++, p2++);


Título: Re: copiar cadenas c++
Publicado por: Horricreu en 19 Mayo 2010, 17:57 pm
Puedes utilizar memcpy() (http://www.cplusplus.com/reference/clibrary/cstring/memcpy/).

Saludos :P


Título: Re: copiar cadenas c++
Publicado por: nicolas_cof en 19 Mayo 2010, 18:07 pm
Tambien puedes usar... strncpy()

http://www.cplusplus.com/reference/clibrary/cstring/strncpy/
http://c.conclase.net/librerias/index.php?ansifun=strncpy

Salu10.


Título: Re: copiar cadenas c++
Publicado por: Micah Genji en 23 Mayo 2010, 08:00 am
gracias x responder mm con punteros aun es muy prematuro hacerlo pero en fin lo tratare de hacer  :)

Ahora con funcion strncpy() funciona pero quiero implementarlo dentro de un for con un ingreso de n veces me captan, en algoritmos toque con esto pero en la implemnetacion es algo mas duro, han ejecutado el codigo expuesto, hay un error el segundo for se antepone al consecutivo del primero y eso no es lo que quiero. bueno alquien q pueda ayudar en la logica, por lo q propuse anda siempre cuando sea un caracter o si fuera datos numericos andaria d lujo  :xD

Pero quiero hacerlo en cadenas, de todas maneras seguire dandole mas vuelta al tema

salud0s