Ayuda asignacion de memoria dinámica palabras en c

<< < (2/5) > >>

Gallu:
Así esta muy bien , recuerda que la variable auxiliar tambien podria se dinamica
Código
char *aux = (char *) malloc(sizeof(char)*20);
 
al final solo tendrías que liberar toda la memoria que pediste ... ;)

newfag:
Cita de: Didacso en 18 Mayo 2010, 17:49 pm

Así esta muy bien , recuerda que la variable auxiliar tambien podria se dinamica
Código
char *aux = (char *) malloc(sizeof(char)*20);
 
al final solo tendrías que liberar toda la memoria que pediste ... ;)


jop eso de poner la aux con memoria dinámica ya es ajustar mucho eh? jaja pero si que tienes razón, muchisimas gracias por la ayuda, de verdad, estaba un poco perdido :)

Eternal Idol:
Mas importante seria que no tuviera posibles agujeros de seguridad, como escribir mas caracteres que los reservados ... lo podes solucionar con fgets (con stdin) + sscanf.

PD. Lo ideal es evitar siempre el uso de scanf (para no ensuciar el buffer).

newfag:
y también tendría que comprobar si la reserva de memoria se hace bien y no devuelve NULL, pero era solo para practicar ese tema un poco, no quiero hacer un programa serio serio.
de todas maneras yo suelo usar scanf, pero uso siempre antes el __fpurge(stdin), para no coger cosas raras.

nicolasblues86:
no entiendo para que haces que 'vect' sea un puntero de puntero si lo que queres hacer es reserva la cantidad justa de memoria para la cantidad de palabras ingresadas, se puede hacer que vect sea tan solo un puntero a char :

para empezar te quisiera corregir un pequeño error, cuando pones

Código
 
 
vect = (char*) calloc(sizeof(char),n);
 
 

no esta del todo bien, deberías poner:

Código
 
 
vect = (char*) calloc(n, sizeof(char) );
 
 

es decir  ponías los parámetros al revés

puntero = (tipo*) calloc (numero de elementos, tamaño de cada elemento)

con esto reservarías la cantidad de mem justa que necesitas con respecto a hacer  mas dinámico el programa y no tener que ingresar el numero de la cantidad de palabras, podrías usar fgets :

Código
 
int ext;
char* vect;
char cadena[50];
 
fgets (cadena, 50, stdin );
 
ext = strlen(cadena) + 1// se le suma uno porque se cuenta el fin de cadena
 
vect = (char*) calloc(ext, sizeof(char) );
 
 


Bueno creo que eso es todo

Saludos

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior