• Domingo 22 de Diciembre de 2024, 17:28

Autor Tema:  Problema con gcc  (Leído 2105 veces)

Rombus

  • Miembro MUY activo
  • ***
  • Mensajes: 105
  • Nacionalidad: ar
    • Ver Perfil
    • http://myspace.com/punkrecycle
Problema con gcc
« en: Domingo 12 de Octubre de 2008, 04:43 »
0
Hola gente!

estube aberiguando sobre la funcion memcpy, ya que siempre tengo problemas de fallos de segmentacion y encontre un codigo de ejemplo en la pagina de c con clase.

el codigo es el siguiente:

Código: C
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. #define LEN1 7
  5. #define LEN2 5
  6.  
  7. int main(void){
  8.     char a[LEN1] = "abcdefg";
  9.     char *ptr;
  10.     int i;
  11.  
  12.     memcpy(ptr, a, LEN1);
  13.    
  14.     for(i=0; i<LEN1; i++)
  15.         printf( "a[%d]=%c ", i, a[i] );
  16.        
  17.     printf("n");
  18.    
  19.     for(i=0; i<LEN2; i++)
  20.         printf( "ptr[%d]=%c ", i, ptr[i] );
  21.        
  22.     printf("n");
  23.    
  24.    return 0;
  25. }
  26.  
  27.  

deberia de andar, ya que parece bastante razonable y a parte esta en c con clase que es una pagina bastante confiable...

el problema es que en mi gcc desde ubuntu me tira un segmentation fault en el memcpy

alguien sabe a q se debe esto?

gracias de antemano!

robbie110487

  • Miembro activo
  • **
  • Mensajes: 66
    • Ver Perfil
Re: Problema con gcc
« Respuesta #1 en: Domingo 12 de Octubre de 2008, 06:25 »
0
Hola, prueba en vez de declarar a ptr como puntero, declararlo como un arreglo de caracteres, algo asi:
Código: Text
  1. char ptr[LEN1]
  2.  
Asi deberia funcionar.

Saludos

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Problema con gcc
« Respuesta #2 en: Domingo 12 de Octubre de 2008, 13:44 »
0
Si, ahi ptr apunta a una direccion indefinida, otra opcion (incluyendo stdlib.h):

Código: Text
  1. char *ptr = (char*)malloc(LEN1 + 1);
  2.  

PD. LEN1 esta mal (por eso tengo que hacer LEN1 + 1), tiene que ser 8 para que haya espacio para el terminador de cadena. Mejor usar char a[] = "abcdefg"; y despues sizeof(a) para obtener lo que seria LEN1.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Rombus

  • Miembro MUY activo
  • ***
  • Mensajes: 105
  • Nacionalidad: ar
    • Ver Perfil
    • http://myspace.com/punkrecycle
Re: Problema con gcc
« Respuesta #3 en: Domingo 12 de Octubre de 2008, 23:18 »
0
ahh!!

y sigo con el problema de asignarle cosas a memoria no definida XD


che, pero que mal los de C con clase al poner ese codigo.

o en otros compiladores anda?

gracias por las respuestas!!

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Problema con gcc
« Respuesta #4 en: Lunes 13 de Octubre de 2008, 00:23 »
0
Cita de: "Rombus"
ahh!!

y sigo con el problema de asignarle cosas a memoria no definida XD


che, pero que mal los de C con clase al poner ese codigo.

o en otros compiladores anda?

gracias por las respuestas!!

¿Donde esta exactamente ese codigo? No deberia funcionar correctamente independientemente del compilador (si funciona es por casualidad), es mas el VC++ no te lo compila siquiera por el tema del terminador de cadena que no entra en un array de ese tamaño.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Rombus

  • Miembro MUY activo
  • ***
  • Mensajes: 105
  • Nacionalidad: ar
    • Ver Perfil
    • http://myspace.com/punkrecycle
Re: Problema con gcc
« Respuesta #5 en: Lunes 13 de Octubre de 2008, 02:08 »
0
esta acà: http://www.conclase.net/c/librerias/fun ... fun=memcpy

yo le agregue un par de cosas para ver si funcionaba, pero el codigo en si es el mismo.
carece de la asignacion.

habia otro tambien q me daba error...

ahora no me acuerdo cual era.


si, tiene sentido pensar q no ande en ningun lado, pq estas asignando algo a ul lugar de memoria que es basura.

habria que mandarles un mail o comunicarse de alguna forma para que lo arreglen los de c con clase, que tiene toda la onda esa pag XD

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Problema con gcc
« Respuesta #6 en: Lunes 13 de Octubre de 2008, 08:10 »
0
En fin, pesimo codigo por lo anteriormente expuesto  :bad:

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Problema con gcc
« Respuesta #7 en: Lunes 13 de Octubre de 2008, 17:41 »
0
Vaya, tambien revise la pagina y que mal.

Es una lastima que los de C con clase no hayan notado un error de ese tamaño  :blink:

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

Rombus

  • Miembro MUY activo
  • ***
  • Mensajes: 105
  • Nacionalidad: ar
    • Ver Perfil
    • http://myspace.com/punkrecycle
Re: Problema con gcc
« Respuesta #8 en: Lunes 13 de Octubre de 2008, 19:32 »
0
si la verdad...

voy a ver si me puedo poner en contacto para que lo corrigan


gracias por las respuestas! :good: