Professional Documents
Culture Documents
Dinamicke Matrice
Dinamicke Matrice
// Zadatak: Treba da napravim matricu tipa char, tj. niz stringova, ali velicina matrice nije poznata.
// Treba da se unosi text sa stdin dok se ne unese prazan string, tj. samo enter. Znaci da svaki red
// matrice predstavlja string. I na kraju, treba da mi se citav tekst ispise na stdout.
// SA GRESKOM
#define korak 5
int main ()
{
char **note = NULL;
int duzina = 0, alocirano = 0, i;
char *c;
note = malloc(korak *sizeof(char*));
// ili note = (char**)malloc(korak * sizeof(char*));
do {
if (duzina == alocirano) {
for (i=alocirano; i<alocirano + korak; i++)
note[i] = malloc(20 *sizeof(char));
alocirano+=korak;
}
c = (char*)malloc(50 * sizeof(char));
gets(c);
if (strlen(c) == 0) break;
strcpy (note[duzina++] , c);
free (c);
}while (1);
for (i=0; i<duzina; i++){
puts (note[i]);
free (note[i]);
}
free (note);
return 0;
}
// -----------------------
// ISPRAVKA
// a ovaj sledeći kod pokušava da alocira memoriju za string na 6-om mestu kada je duzina = 5,
// a to 6. mesto je ko zna šta u memoriji.
if (duzina == alocirano)
{
for (i=alocirano; i<alocirano+korak; i++)
note[i] = malloc(20 * sizeof(char));
alocirano += korak;
}
// Program lepo radi za 4 ili manje stringova. Dakle, moraš u ovom drugom delu koda da
// namestiš da ti povećava note za još dodatnih 5 bloka (korak).