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)
| | |-+  Problema con punteros.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con punteros.  (Leído 1,542 veces)
maxim_o

Desconectado Desconectado

Mensajes: 186


Ver Perfil
Problema con punteros.
« en: 24 Junio 2016, 18:28 pm »

Hola! Tengo un problema con unos punteros. Quiero pasar a una función un puntero a un doble puntero sin inicializar y dos cadenas de texto. Y en esa función me reserve espacio en la matriz de manera dinámica y me asigne esas cadenas, pero me tira un fallo de acceso de memoria al acceder al segundo miembro del array. Aquí el código:

Código
  1.  
  2. void copia(char *destino,char *origen){
  3.     int i=0;
  4.  
  5.     for(i=0;origen[i]!='\0';i++)
  6.  destino[i] = origen[i];
  7.  
  8.     destino[i]='\0';
  9.  
  10. }
  11. void funcion(char ***arg1, char *arg2, char *arg3){
  12.      *arg1= (char **)malloc(2*(sizeof(char *)));
  13.      *arg1[0] = (char *)malloc(5*sizeof(char)); //"HOLA\0"
  14.      *arg1[1] = (char *)malloc(6*sizeof(char)); //"ADIOS\0"
  15.      copia(*arg1[0],"HOLA");
  16.      copia(*arg1[1],"ADIOS");
  17. }
  18.  
  19.  
  20. int main(){
  21.  
  22.      char **ptr;
  23.      funcion(&ptr,"HOLA", "ADIOS");
  24.      printf("%s",ptr[0]);
  25.      printf("%s",ptr[1]);
  26. }
  27.  
  28.  
  29.  
  30.  
  31.  


« Última modificación: 24 Junio 2016, 18:30 pm por maxim_o » En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.696


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Problema con punteros.
« Respuesta #1 en: 24 Junio 2016, 23:28 pm »

Hola no he encontrado el erro sin embargo cambie la forma de acceder a los apuntadores y funciono bien, aun asi estoy intrigado.

Te dejo el codigo.

Código
  1. void funcion(char ***arg1, char *arg2, char *arg3){
  2. *arg1= (char **)malloc(2*(sizeof(char *)));
  3. arg1[0][0] = (char *)malloc(5*sizeof(char)); //"HOLA\0"
  4. arg1[0][1] = (char *)malloc(6*sizeof(char)); //"ADIOS\0"
  5. copia(arg1[0][0],arg2);
  6. copia(arg1[0][1],arg3);
  7. }
  8.  
  9. int main(){
  10. char **ptr;
  11. funcion(&ptr,"HOLA\0", "ADIOS\0");
  12. printf("%s\n",ptr[0]);
  13. printf("%s\n",ptr[1]);
  14. }

Saludos!


En línea

class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: Problema con punteros.
« Respuesta #2 en: 24 Junio 2016, 23:29 pm »

El problema es cuestión de prioridades. Los corchetes tienen prioridad sobre el asterisco, así que cuando haces *arg1[1] es como si hicieras *(arg1[1]). Para solucionar el problema, tendrías que poner paréntesis para que el asterisco tome prioridad: (*arg1)[1]
En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con Punteros en C
Programación C/C++
aaronas 8 3,771 Último mensaje 2 Abril 2012, 00:12 am
por david_BS
Problema con punteros.
Programación C/C++
vazquinhos 4 2,524 Último mensaje 20 Septiembre 2012, 18:35 pm
por do-while
Problema con punteros
Programación C/C++
NEGRO_PABLO 3 2,676 Último mensaje 30 Noviembre 2012, 18:41 pm
por twins
Duda Punteros Dobles/Array de punteros
Programación C/C++
MisterJava 2 4,901 Último mensaje 30 Diciembre 2012, 20:19 pm
por MisterJava
[C]: problema punteros y archivos
Programación C/C++
andie13 3 1,945 Último mensaje 26 Noviembre 2016, 23:35 pm
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines