Ayuda asignacion de memoria dinámica palabras en c
newfag:
buenas, tengo un problemilla, quiero hacer un programa que acepte un numero indeterminado de palabras y las imprima por pantalla(esto último solo para ver si funciona), había pensado algo así pero no va, una ayudita por favor
Código:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
main()
{
int n,i;
char *vect;
printf("Nº palabras: ");
scanf("%d" ,&n);
vect=(char *)calloc(sizeof(char),n);
for(i=0;i<n;i++)
{
printf("palabra: ");
scanf("%s" ,vect[i]);
}
for(i=0;i<n;i++)
printf("%s\n", vect[i]);
}
Eternal Idol:
Ahi estas reservando memoria para una sola palabra de n caracteres ;)
newfag:
Cita de: Eternal Idol en 18 Mayo 2010, 16:38 pm
Ahi estas reservando memoria para una sola palabra de n caracteres ;)
ala es verdad!!!
vale, me pongo a ello, muchas gracias
EI: juntando mensajes.
arreglado, por si alguien le sirve de ayuda aqui lo dejo
Código:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
main()
{
int n,i;
char **vect;
printf("Nº palabras: ");
scanf("%d" ,&n);
vect=(char **)calloc(sizeof(char*),n);
for(i=0;i<n;i++)
vect[i]=(char*)malloc(sizeof(char)*50);
for(i=0;i<n;i++)
{
printf("palabra: ");
scanf("%s" ,vect[i]);
}
for(i=0;i<n;i++)
printf("%s\n", vect[i]);
}
Gallu:
No te parece que estás "mal gastando " memoria ? que sucede cuando la palabra ingresada no es de 50 caracteres , en todo caso 50 caracteres ya me suena a frase , quedaría mejor si reservas la memoria necesaria para el tamaño especifico de cada palabra ... :-\
newfag:
Cita de: Didacso en 18 Mayo 2010, 17:17 pm
No te parece que estás "mal gastando " memoria ? que sucede cuando la palabra ingresada no es de 50 caracteres , en todo caso 50 caracteres ya me suena a frase , quedaría mejor si reservas la memoria necesaria para el tamaño especifico de cada palabra ... :-\
hmm tienes razón, quedaría algo así, pero no se me ocurre otra manera de hacerlo que poner una variable auxiliar de 20 caracteres :S
EDIT: al usar la funcion strlen lo se incluye el terminador de la cadena, por eso pongo strlen(aux)+1
Código:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
main()
{
int n,i;
char **vect,aux[20];
printf("Nº palabras: ");
scanf("%d" ,&n);
vect=(char **)calloc(sizeof(char*),n);
for(i=0;i<n;i++)
{
printf("palabra: ");
scanf("%s" ,aux);
vect[i]=(char*)malloc(sizeof(char)*(strlen(aux)+1));
strcpy(vect[i],aux);
}
for(i=0;i<n;i++)
printf("%s\n", vect[i]);
}
Navegación
[#] Página Siguiente