File: Stare vježbe/vjezbe12/76__binarna_datoteka.c

  1. /*
  2.   76__binarna_datoteka.c
  3.   Uvodimo binarne datoteke i funkcije fread i fwrite.
  4. */
  5.  
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <ctype.h>
  9.  
  10. #define FALSE 0
  11. #define TRUE !FALSE
  12.  
  13. struct dionica_dat {
  14. char ime[30];
  15. float cijena;
  16. };
  17.  
  18. void write_info(void);
  19. void read_info(void);
  20.  
  21. int main()
  22. {
  23. char c;
  24. int done=FALSE;
  25.  
  26. while(!done)
  27. {
  28. fflush (stdin);
  29. puts("\nTrziste dionica");
  30. puts("D - Dodavanje nove dionice");
  31. puts("L - Listanje dionica");
  32. puts("I - Izlaz");
  33. printf("Vas izbor: ");
  34. while ((c=getchar())==' ' || c=='\t' || c=='\n');
  35. c = toupper(c);
  36.  
  37. switch(c)
  38. {
  39. case('D'):
  40. puts("\nDodavanje nove dionice");
  41. write_info();
  42. break;
  43. case('L'):
  44. puts("\nListanje dionica");
  45. read_info();
  46. break;
  47. case('I'):
  48. puts("Izlaz");
  49. done = TRUE;
  50. break;
  51. default:
  52. puts("?");
  53. break;
  54. }
  55. }
  56. }
  57.  
  58. void write_info(void)
  59. {
  60. FILE *dionice;
  61. struct dionica_dat dionica;
  62.  
  63. printf("Ime dionice: ");
  64. scanf("%s", dionica.ime);
  65. printf("Koliko ste platili za nju: ");
  66. scanf("%f", &dionica.cijena);
  67.  
  68. dionice = fopen("dionice.dat", "ab");
  69. if(dionice==NULL)
  70. {
  71. printf("Greska prilikom otvaranja datoteke!\n");
  72. return;
  73. }
  74.  
  75. fwrite(&dionica, sizeof(dionica), 1, dionice);
  76.  
  77. fclose(dionice);
  78. printf("Dionica dodana.\n");
  79. }
  80.  
  81. void read_info(void)
  82. {
  83. FILE *dionice;
  84. struct dionica_dat dionica;
  85. int foo;
  86.  
  87. dionice = fopen("dionice.dat", "rb");
  88. if(dionice==NULL)
  89. {
  90. printf("Greska prilikom otvaranja datoteke ili je ona prazna!\n");
  91. return;
  92. }
  93.  
  94. while(TRUE)
  95. {
  96. foo = fread(&dionica, sizeof(dionica), 1, dionice);
  97. if(foo==0)
  98. break;
  99. printf("Ime dionice: %s\n", dionica.ime);
  100. printf("Cijena dionice: %.2fKn\n", dionica.cijena);
  101. }
  102.  
  103. fclose(dionice);
  104. }
  105.