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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Pasar vector de puntero a char a las funciones[C]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Pasar vector de puntero a char a las funciones[C]  (Leído 10,998 veces)
NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Re: Pasar vector de puntero a char a las funciones[C]
« Respuesta #10 en: 21 Junio 2016, 16:03 pm »

Hola, que tengan un muy buen día. -
Continuo con mis dudas pero ante quiero efectuar una aclaración, si consideran que esto de preguntar y preguntar, y no recurrir a un manual a buscar por mí mismo y piensan que eso es lo que debo hacer, todo ben, yo tengo mi criterio formado del porqué continuamente recurro a Uds. para evacuar mis dudas, en definitiva, si este post no tuviera respuesta lo entendería perfectamente y si me pegaran una bofetada psicológica también. -
Dicho esto pasa a consultarles sobre mis dudas.
Intento pasar el ingreso de los datos a una función y tengo (aparentemente) un solo error y esta en la siguiente linea. - 
Código
  1. ptrFrases = ingreso( frases );
Citar
ayp.c:10:2: error: invalid operands to binary & (have ‘int’ and ‘char **’)
Y la pregunta del millón, porque debo utilizar doble apuntador, tengo claro que lo que contiene la variable apuntador es una dirección de memoria y que un doble apuntador contiene la dirección de memoria de otro puntero. -

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. char ingreso( char **frases );
  5.  
  6. int main( void ){
  7. char **frases=NULL, **ptrFrases=NULL;
  8. size_t i = 0
  9.  
  10. ptrFrases = ingreso( frases );
  11.  
  12. while(i < 5){
  13. printf( "\n Frases Ingresadas....: %s", ptrFrases[i] );
  14. free(frases[i]);
  15. i++;
  16. }
  17.  
  18. return 0;
  19. }
  20.  
  21.  
  22. char ingreso( char **frases ){
  23. size_t i=0;
  24.  
  25. while(i < 5){
  26. i++;
  27. frases = (char**)realloc( frases, i * sizeof(char*) );
  28. frases[i-1] = calloc(20,1);
  29. printf( "\n Ingrese frase....:" );
  30. fgets( frases[i-1], 20, stdin );
  31. }
  32.  
  33. return **frases;
  34. }
Los dobles punteros son lo que no puedo interpretar, por lo menos en este caso. -
Saludos.


En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Pasar vector de puntero a char a las funciones[C]
« Respuesta #11 en: 21 Junio 2016, 16:17 pm »

Si la funcion esta devolviendo un doble apuntador
deberia de ser:
Código
  1. char** ingreso( char **frases );

Con eso corrijes el error

Respecto a  tu duda.
Citar
Y la pregunta del millón, porque debo utilizar doble apuntador

No se exactamente por donde va la pregunta.

Pero se usa doble apuntador para darle mas sentido al programa, que el contenido que esta siendo apuntado es un vector de apuntadores. Que a su vez cada apuntadorindividual  apunta un vector de caracteres...

Es complicado pero una vez que lo pillas al 100 estarias entendiendo uno de los topics mas complicados del lenguaje.

Te dejo mi video, creo que ya te lo habia pasado en otro de mis respuestas.



En línea

NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Re: Pasar vector de puntero a char a las funciones[C]
« Respuesta #12 en: 21 Junio 2016, 17:33 pm »

Citar
el contenido que esta siendo apuntado es un vector de apuntadores.
Ya había leído esto en alguna parte y creo que es la clave para entender los punteros dobles, en cuanto a
la solución que escribiste no me funciona, sigue sin compilar.-
Saludos.
En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Pasar vector de puntero a char a las funciones[C]
« Respuesta #13 en: 21 Junio 2016, 17:51 pm »

Debes de cambiar

el prototipo de funcion.
la funcion en si
y el return no deberia de tener los 2 asteriscos.

De ahi en mas en que otra linea te da error?

Saludos

En línea

NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Re: Pasar vector de puntero a char a las funciones[C]
« Respuesta #14 en: 22 Junio 2016, 14:28 pm »

Hola, buen día para todos.
Como se nota en el código pude efectuar un avance pero me falta algo importante y es que no logro retomar la dirección de memoria a main del puntero frases como lo sugería Alberto.
Citar
La otra es que debes de retornat el valor del apuntador de fracea ya que si realloc cambia la posición de memoria de fraces dentro de una de las funciones la funcion main no se va a enterar y va a tener una copia antigua del apuntador.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void ingreso( char** );
  5.  
  6. int main( void ){
  7. char **frases=NULL;
  8.  
  9. ingreso( frases );
  10.  
  11. return 0;
  12. }
  13.  
  14. void ingreso( char** frases ){
  15. size_t i=0;
  16.  
  17. while(i < 5){
  18. i++;
  19. frases = (char**)realloc( frases, i * sizeof(char*) );
  20. frases[i-1] = calloc(20,1);
  21. printf( "\n Ingrese frase....:" );
  22. fgets( frases[i-1], 20, stdin );
  23. }
  24. i=0;
  25. while(i < 5){
  26. printf( "\n Frases Ingresadas....: %s", frases[i] );
  27. free(frases[i]);
  28. i++;
  29. }
  30. }

PD: En definitiva, lo que me falta es poder imprimir los datos ingresados desde main y no desde la función ingreso.-

Espero puedan ayudarme con esto también.
Saludos.  
« Última modificación: 22 Junio 2016, 14:36 pm por NOB2014 » En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Pasar vector de puntero a char a las funciones[C]
« Respuesta #15 en: 22 Junio 2016, 14:46 pm »

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. char** ingreso( char** );
  5.  
  6. int main( void ){
  7. char **frases=NULL;
  8.  
  9. frases= ingreso( frases );
  10.       imprimir(frases);
  11. return 0;
  12. }
  13.  
  14. char** ingreso( char** frases ){
  15. size_t i=0;
  16.  
  17. while(i < 5){
  18. i++;
  19. frases = (char**)realloc( frases, i * sizeof(char*) );
  20. frases[i-1] = calloc(20,1);
  21. printf( "\n Ingrese frase....:" );
  22. fgets( frases[i-1], 20, stdin );
  23. }
  24.      return frases;
  25. }
  26.  
  27. void imprimir(char **frases){
  28. int i=0;
  29. while(i < 5){
  30. printf( "\n Frases Ingresadas....: %s", frases[i] );
  31. free(frases[i]);
  32. i++;
  33. }
  34.       free(frases);
  35. }

Saludos
En línea

NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Re: Pasar vector de puntero a char a las funciones[C]
« Respuesta #16 en: 22 Junio 2016, 14:56 pm »

Muy bien maestro funciona a la perfección, por si alguien quiere correr tu código como Ej. deberías agregarle el prototipo. -

Muchas gracias por tu tiempo, Saludos.
En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
martiz de char doble puntero
Programación C/C++
neo_from_cs_matrix 2 6,603 Último mensaje 15 Julio 2011, 00:05 am
por rir3760
duda doble puntero char a matriz de char
Programación C/C++
neo_from_cs_matrix 3 6,264 Último mensaje 5 Septiembre 2011, 03:53 am
por rir3760
Como pasar una cadena char a hexadecimal por argumento a un constant char?
Programación C/C++
ahaugas 3 5,686 Último mensaje 13 Enero 2013, 14:09 pm
por ahaugas
¿Pregunta puntero a char en c++? « 1 2 »
Programación C/C++
Zodiak98 11 6,616 Último mensaje 23 Abril 2013, 17:01 pm
por rir3760
Pasar tipo const char* a char « 1 2 »
Programación C/C++
jorge_hura 15 11,482 Último mensaje 25 Julio 2013, 09:50 am
por Eternal Idol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines