---Kat999---
24-05-2007, 15:18
Salve a tutti, avrei bisogno di una mano con un esercizio C riguardo l'allocazione dinamica della memoria visto che tra poco ho l'esame appunto di C.
Premetto che ho iniziato a programmare da relativamente poco, quindi mi scuso se vi potrà sembrare una cosa banale o stupida ma io è un po che provo a far funzionare questo programma e non ci riesco :)
L'esercizio è il secondo di questa pagina: http://www.informatica.uniroma2.it/upload/2005/LPR/IIappello.pdf
Quello che volevo provare a fare io era creare un vettore di stringhe (con dimensione immesa da input), con la dimensioni delle singole stringhe a loro volta immesse da input.
Il fatto però è che non ho per niente dimestichezza con l'allocazione dinamica della memoria (come scritto prima ho iniziato a programmare da poco), quindi la mia idea potrebbe essere semplicemente implementata male, oppure sballata sin dal principio, ditemi voi. Questo è il codice:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
int main()
{
char *str, *p;
int nstr, lstr, i;
printf("Quante stringhe vuoi inserire: \n");
scanf("%d", &nstr);
if (nstr > 0) {
str = (char *) calloc(nstr, sizeof(char *)); /* dovrebbe allocare memoria
per un vettore di NSTR stringhe */
for ( i = 0; i < nstr; i++) {
printf("Quanto e' lunga la prossima stringa? \n");
scanf("%d", &lstr);
p = (char *) calloc(lstr, sizeof(char)); /*dovrebbe allocare memoria per la stringa lunga LSTR */
scanf("\n");
gets(p);
str[i] = (char *) calloc(lstr, sizeof(char)); /*dovrebbe allocare memoria per la stringa da copiare in str[i] */
strcpy(str[i], p); /*copio p in str[i] */
free(p);
}
}
for(i = 0; i < nstr; i++)
puts(str[i]);
for(i = 0; i < nstr; i++)
free(str[i]);
system("PAUSE");
return 0;
}
Il progr si blocca quando tenda di eseguire l'istruzione strcpy(ecc ecc)
Spero che non lo troviate troppo ridicolo :D
Cmq ad intuito direi che sbaglio sicuramente qualcosa nell'usare la variabile str, no?
Premetto che ho iniziato a programmare da relativamente poco, quindi mi scuso se vi potrà sembrare una cosa banale o stupida ma io è un po che provo a far funzionare questo programma e non ci riesco :)
L'esercizio è il secondo di questa pagina: http://www.informatica.uniroma2.it/upload/2005/LPR/IIappello.pdf
Quello che volevo provare a fare io era creare un vettore di stringhe (con dimensione immesa da input), con la dimensioni delle singole stringhe a loro volta immesse da input.
Il fatto però è che non ho per niente dimestichezza con l'allocazione dinamica della memoria (come scritto prima ho iniziato a programmare da poco), quindi la mia idea potrebbe essere semplicemente implementata male, oppure sballata sin dal principio, ditemi voi. Questo è il codice:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
int main()
{
char *str, *p;
int nstr, lstr, i;
printf("Quante stringhe vuoi inserire: \n");
scanf("%d", &nstr);
if (nstr > 0) {
str = (char *) calloc(nstr, sizeof(char *)); /* dovrebbe allocare memoria
per un vettore di NSTR stringhe */
for ( i = 0; i < nstr; i++) {
printf("Quanto e' lunga la prossima stringa? \n");
scanf("%d", &lstr);
p = (char *) calloc(lstr, sizeof(char)); /*dovrebbe allocare memoria per la stringa lunga LSTR */
scanf("\n");
gets(p);
str[i] = (char *) calloc(lstr, sizeof(char)); /*dovrebbe allocare memoria per la stringa da copiare in str[i] */
strcpy(str[i], p); /*copio p in str[i] */
free(p);
}
}
for(i = 0; i < nstr; i++)
puts(str[i]);
for(i = 0; i < nstr; i++)
free(str[i]);
system("PAUSE");
return 0;
}
Il progr si blocca quando tenda di eseguire l'istruzione strcpy(ecc ecc)
Spero che non lo troviate troppo ridicolo :D
Cmq ad intuito direi che sbaglio sicuramente qualcosa nell'usare la variabile str, no?