Foros del Web » Programación para mayores de 30 ;) » C/C++ »

strcpy con punteros

Estas en el tema de strcpy con punteros en el foro de C/C++ en Foros del Web. Porfavor alguien que sepa como solucionar este problema me está dando dolor de cabeza @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código C++: Ver original #include <iostream> #include <stdio.h> #include ...
  #1 (permalink)  
Antiguo 23/06/2011, 22:34
Avatar de Franz1628  
Fecha de Ingreso: marzo-2007
Ubicación: Lima - Perú
Mensajes: 145
Antigüedad: 17 años, 1 mes
Puntos: 26
strcpy con punteros

Porfavor alguien que sepa como solucionar este problema me está dando dolor de cabeza

Código C++:
Ver original
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <conio.h>
  5. #include <string.h>
  6.  
  7. using namespace std;
  8.  
  9. int main(){
  10.     char *nombre[30];
  11.     strcpy(*nombre,"123456789012345678901234567890");
  12.     cout<<*nombre;
  13.     system("pause");
  14. }
  #2 (permalink)  
Antiguo 24/06/2011, 07:40
Avatar de afrika026  
Fecha de Ingreso: junio-2011
Mensajes: 85
Antigüedad: 12 años, 10 meses
Puntos: 19
Respuesta: strcpy con punteros

lo estas haciendo mal.

strcpy(cadena donde se copia, puntero a cadena a copiar);

la manera es la siguiente:


int main(){

char *nombre = "123456789012345678901234567890";

//ponemos 31 porque strcpy agrega al final un caracter nulo
char nombre_copiado[31];

strcpy(nombre_copiado, nombre);

cout<<nombre_copiado;

system("pause");

}
  #3 (permalink)  
Antiguo 24/06/2011, 09:25
 
Fecha de Ingreso: febrero-2008
Ubicación: Leon
Mensajes: 19
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: strcpy con punteros

El problema con el primer codigo es que estas declarando un arreglo de punteros de tamaño 30; no una cadena de 30 caracteres.

Si quieres manejar tu cadena de forma dinamica, tendias que hacer esto:

Código:
char *nombre;
nombre = new char[30];
strcpy(nombre,""123456789012345678901234567890");
cout << nombre;
  #4 (permalink)  
Antiguo 24/06/2011, 10:35
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años
Puntos: 71
Respuesta: strcpy con punteros

La función strcpy, recibe punteros a tipo char. Es por eso que lo siguiente funciona.

Código C++:
Ver original
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <conio.h>
  5. #include <string.h>
  6.  
  7. using namespace std;
  8.  
  9. int main(){
  10.     char nombre[30];
  11.     strcpy(nombre,"123456789012345678901234567890");
  12.     cout<<nombre;
  13.     system("pause");
  14. }
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%
  #5 (permalink)  
Antiguo 24/06/2011, 10:42
 
Fecha de Ingreso: febrero-2008
Ubicación: Leon
Mensajes: 19
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: strcpy con punteros

Quizas la intencion de Franz1628 desde el principio era declarar una arreglo de puntero que apunten a char.

Si ese fue el caso, solo te faltaria reservar memoria a la que apuntaria el primer elemento de tu arreglo:

Código:
char *nombre[30];
nombre[0] = new char[30];
strcpy(nombre[0],"123456789012345678901234567890");
cout << nombre[0];
Este codigo seria equivalente al de arriba y que se parece mucho al que posteaste:

Código:
char *nombre[30];
*nombre = new char[30];
strcpy(*nombre,"123456789012345678901234567890");
cout << *nombre;

Etiquetas: punteros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:36.