|
Mostrar Mensajes
|
Páginas: [1]
|
2
|
Programación / Programación C/C++ / Re: Ayuda asignacion de memoria dinámica palabras en c
|
en: 19 Mayo 2010, 08:22 am
|
@nicolasblues86: tienes razón con lo de calloc, el orden está mal puesto, pero si no supiera de antemano las palabras que voy a meter se podría usar la función realloc para que fuera modificando el tamaño de vect. EDIT: tal que asi vect=(char **)calloc(1,sizeof(char*)); do { printf("palabra: "); __fpurge(stdin); scanf("%s" ,aux); if(strcmp(aux,"fin") { vect[i]=(char*)malloc(sizeof(char)*(strlen(aux)+1)); strcpy(vect[i],aux); n++; i++; vect=(char**)realloc(vect,sizeof(char*)*(n+1)); } }while(strcmp(aux,"fin"));
|
|
|
4
|
Programación / Programación C/C++ / Re: Ayuda asignacion de memoria dinámica palabras en c
|
en: 18 Mayo 2010, 17:53 pm
|
Así esta muy bien , recuerda que la variable auxiliar tambien podria se dinamica 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
|
|
|
5
|
Programación / Programación C/C++ / Re: Ayuda asignacion de memoria dinámica palabras en c
|
en: 18 Mayo 2010, 17:39 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 #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]); }
|
|
|
6
|
Programación / Programación C/C++ / Re: Ayuda asignacion de memoria dinámica palabras en c
|
en: 18 Mayo 2010, 16:41 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 #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]); }
|
|
|
7
|
Programación / Programación C/C++ / Ayuda asignacion de memoria dinámica palabras en c
|
en: 18 Mayo 2010, 16:30 pm
|
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 #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]); }
|
|
|
|
|
|
|