Hola. Tengo una duda que deseo evacuarla ahora porque me impide seguir estudiando y es: como se pasan los vectores de punteros a las funciones.
Código
void ingreso(char*ptrFrases );
Código
void ingreso(char ptrFrases[]);
Código
int main(void){
char*ptrFrases = NULL;
ingreso( ptrFrases );
ordenar( ptrFrases );
mostrar( ptrFrases );
return0;
}
Dejo el programa por si les hace falta para interpretar mejor la duda, luego tengo que continuar consultándolos porque la siguiente linea sé que estoy haciendo todo mal pero es la primera vez que lo intento y realmente no logro solucionarlo, hacer lo mismo con números me funciona a la perfección, en cambio, con cadenas no. -
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.-
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.
En mi canal hice un video sobre Apuntadores dobles.
Hola. Creo que nunca me costo tanto entender un tema como en este caso, tan solo para intentar avanzar me podrían decir que tengo que modificar para que no me del siguiente error.
Citar
ayp.c:11:10: warning: assignment from incompatible pointer type [enabled by default] frases = (char*)realloc( frases, i * sizeof(char*) );
Código
#include <stdio.h>
#include <stdlib.h>
int main(void){
char**frases,*tmp;
size_t i=0;
while(i <5){
frases =(char*)realloc( frases, i *sizeof(char*));
No tendrá mucha relación con el programa que quiero hacer pero trate de hacerlo sencillo para poder entenderlo. -
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.-
Al fin logre que funcione, dejo el código porque además del error que me solucionaste tenía 2 más. - El incremento de la variable i va al comienzo del bucle y no al final, creo que es porque en la primer iteración valiendo cero i no reservaría memoria. - Y el segundo lo producía porque no igualaba a NULL el puntero frases. -
Código
#include <stdio.h>
#include <stdlib.h>
int main(void){
char**frases=NULL,*tmp=NULL;
size_t i=0;
while(i <5){
i++;
frases =(char**)realloc( frases, i *sizeof(char*));
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.-
Tienes fugas de memoria en el interior del bucle en cada llamada a calloc() asignas un nuevo bloque de memoria a tmp y el anterior se pierde. Debes reservar espacio fuera del bucle o liberar en cada iteración y no olvides liberar al final en ambos casos.
Hola. Bueno al fin en este día aprendí más de lo esperado, con la primer respuesta pensé que no podría nunca explicar mis dudas, pero todo se fue encaminando, muchas gracias a todos los que me ayudaron en este post. Espero que ahora este aceptable y me quiero ver encajando todo esto en el otro programa, espero lograrlo.
Código
#include <stdio.h>
#include <stdlib.h>
int main(void){
char**frases=NULL;
size_t i=0;
while(i <5){
i++;
frases =(char**)realloc( frases, i *sizeof(char*));
« Última modificación: 21 Junio 2016, 02:40 am 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.-