/* (c) kreator stog na disku.. */ #include #include #define MAX_ELEM 10 #define IME_STOGA "stog.dat" #define IME_ULAZA "input.txt" int dodaj(int element,FILE *stog,int n,int *vrh) { if (*vrh>=n-1) { printf("stog je pun, vrh je %d\n", *vrh); return 0; } (*vrh)++; fseek(stog,*vrh*sizeof(int),SEEK_SET); fwrite(&element,sizeof(int),1,stog); printf("dodao sam %d-ti element %d\n", *vrh, element); return 1; } int brisi(int *stavka,FILE *stog,int n,int *vrh) { if(*vrh<0) { puts("stog je prazan"); return 0; } fseek(stog,*vrh*sizeof(int),SEEK_SET); fread(stavka,sizeof(int),1,stog); printf("obrisao sam %d-ti element %d\n", *vrh, *stavka); (*vrh)--; return 1; } void fatal(char *msg) { puts(msg); exit(EXIT_FAILURE); } int main(void) { FILE *input, *output; int element,vrh=-1,i,j=0,tmp; if ((input=fopen(IME_ULAZA,"rt"))==NULL) fatal("ne mogu otvoriti ulaz"); if ((output=fopen(IME_STOGA,"w+b"))==NULL) fatal("ne mogu otvoriti izlaz"); while(fscanf(input,"%d",&element)!=EOF) { ++j; if (dodaj(element,output,MAX_ELEM,&vrh)) for(i=0;i