elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  asignación dinámica de memoria y strcpy
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: asignación dinámica de memoria y strcpy  (Leído 2,634 veces)
m@o_614


Desconectado Desconectado

Mensajes: 389


Ver Perfil
asignación dinámica de memoria y strcpy
« en: 5 Junio 2014, 18:53 pm »

Saludos

Tengo un pequeño código en el cual le asigno memoria a un puntero dinamicamente, despues le asigno unos valores y los imprimo, el problema lo tengo en el strcpy que se supone que le tiene que asignar la cadena "hola" al puntero, pero el programa truena y no entiendo por qué??

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main()
  6. {
  7.    char *x;
  8.    x= (char*)calloc(10,sizeof(char));
  9.    x = "101010101";
  10.    printf("[%s]\n",x);
  11.    strcpy(x,"hola");
  12.    printf("[%s]\n",x);
  13.    return 0;
  14. }

gracias


En línea

Klixz

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: asignación dinámica de memoria y strcpy
« Respuesta #1 en: 5 Junio 2014, 19:08 pm »

Que tu int main que de así.

Código
  1. int main(int argc, char **argv)

Y luego en el char crees la variable, luego con strcpy & printf imprimes.

Código
  1. char tuvariable[] ="hola";
  2.  
  3. char elhacker[]="que pasi colegi";

Y luego para imprimirlos haces esto.

Código
  1. strcpy(tuvariable,elhacker); // llamamos al char
  2.  
  3. printf("%s\n",tuvariable);// ahora imprimimos


que no se te olvide el return 0;

Cuídate, y si tienes alguna duda me avisas por MP o comenta tema


En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: asignación dinámica de memoria y strcpy
« Respuesta #2 en: 5 Junio 2014, 19:32 pm »

En la linea 9 estas asignandole a x la direccion de memoria donde se encuentra la cadena "101010101" (ademas eso genera un memory leak, la memoria antes reservada no fue liberada y no hay mas referencias a ella) por eso despues cuando intentas escribir sobre la cadena da error, seguro que la misma esta en la sección de datos de solo lectura.



Klixz: lee las preguntas con atencion por favor.
« Última modificación: 5 Junio 2014, 19:36 pm por Eternal Idol » En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: asignación dinámica de memoria y strcpy
« Respuesta #3 en: 5 Junio 2014, 22:42 pm »

Ahondando en lo que comenta E.I, al hacer:

  
Código
  1. x = "101010101";

al tratarse de una cadena de caracteres constantes no podrás modificarla a posteriori, de ahi que al intentarlo con strcpy el programa cruja. Para ello, para modificar el valor del puntero, tendría que "apuntar" a una dirección que no sea una constante, como un array.

El resultado que quieres obtener te lo puede proporcionar curiosamente lo mismo que te daba problema:strcpy.

Como ejemplo:

Citar

x=strcpy1=[101010101]
x=strcpy2=[hola]
Process returned 0 (0x0)


Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main(){
  6.  char *x;
  7.  x = (char*)calloc(10,1);
  8.  
  9.  strcpy(x,"101010101");
  10.  printf("\nx=strcpy1=[%s]",x);
  11.  
  12.  strcpy(x,"hola");
  13.  printf("\nx=strcpy2=[%s]",x);
  14.  
  15.  free(x);
  16.  return 0;
  17. }

¡¡¡¡ Saluditos! ..... !!!!


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda asignacion de memoria dinámica palabras en c « 1 2 3 »
Programación C/C++
newfag 24 12,894 Último mensaje 19 Mayo 2010, 20:42 pm
por Eternal Idol
Asignacion Dinamica Memoria
Programación C/C++
charmedever 5 3,429 Último mensaje 21 Octubre 2011, 05:25 am
por charmedever
Problema con asignación dinamica de memoria.
Programación C/C++
ThePinkPanther 9 4,693 Último mensaje 4 Febrero 2013, 00:56 am
por ThePinkPanther
asignacion dinamica de memoria
Programación C/C++
d91 2 2,259 Último mensaje 1 Junio 2014, 05:09 am
por Drewermerc
Librería alloc -- asignación dinámica de memoria en Arduino
Programación C/C++
profinet 0 3,711 Último mensaje 16 Noviembre 2023, 22:25 pm
por profinet
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines