| 
 File: Stare vježbe/vjezbe10/61__malloc_1Dpolja.c 
/*     61__malloc_1Dpolja.c     Rad s dinamicki alociranim jednodimenzionalnim poljima,     Uvodjenje funkcije realloc.     -----     Prototip funkcije realloc:     void* realloc(void* memblock, size_t size);     Pomocu funkcije realloc mozemo realocirati blok memorije -- realloc ce     vratiti void* pointer na realocirani (i eventualno premjesteni) komad     memorije na koga je prethodno pokazivao pointer memblock.     Sadrzaj realociranog bloka memorije ostat ce nepromijenjen do manje od     nove i stare velicine. */   #include <stdio.h> #include <stdlib.h> #include <malloc.h>   int main() {     int m, n, foo, i, j, pos, OK, *polje;       printf("Koliko brojeva zelite unijeti: ");      scanf("%d", &n);     /* Alociramo memoriju za n elemenata polja.        Buduci ce nam pojedini element polja biti tipa int, potrebno je        alocirati n*sizeof(int) byteova. */     polje = (int*) malloc(n*sizeof(int));     if(polje == NULL) {         printf("Greska u alokaciji memorije!\n");          exit(1);     }        for(i=0; i<n ; i++) {         scanf("%d", &polje[i]);         /* ili: scanf("%d", polje+i); */     }       for(i=0; i<n; i++)       printf("\n\nKoliko jos brojeva zelite unijeti: ");      scanf("%d", &m);     /* Pomocu funkcije realloc povecati cemo trenutnu velicinu        jednodimenzionalnog polja polje za m mjesta (odnosno m*sizeof(int)        byteova). */     polje = (int*) realloc(polje, (m+n)*sizeof(int));     if(polje == NULL) {         printf("Greska u alokaciji memorije!\n");          exit(1);     }          for(i=0; i<m; i++) {         scanf("%d", &foo);         OK = 0;         while(!OK) {             OK = 1;             printf("Na koje mjesto u polju (-1 za na kraj polja): ");              scanf("%d", &pos);              if(pos == -1)                 *(polje+n+i) = foo;                 /* ili: polje[n+i] = foo */             else if(pos<0 || pos > n+i) {                 printf("Greska: Neispravna pozicija!\n");                  OK = 0;             }             else {                 /* Pomicemo sve elemente polja od pozicije pos pa nanize */                 for(j=n+i ; j>pos ; j--)                     polje[j] = polje[j-1];                 polje[pos] = foo;                          }         }         for (j=0; j<n+i+1; j++)     }              free(polje);       return 0; }   
 
          
  
       |