#include #include #include struct{ char ime[30+1]; char prezime[50+1]; long matbr; float placa; char oznaka; } place; int main(){ FILE *fin; char buffer[32]; float granica; if ((fin = fopen("place.dat", "a+b"))==NULL) { printf("Greska, ne mogu otvoriti datoteku\n"); getche(); return 1; } printf("Unesi granicnu prihoda: "); fgets(buffer, sizeof(buffer), stdin); granica=atof(buffer); while(1){ fseek(fin, 0, SEEK_END); printf("Ime: "); memset(place.ime, 0, sizeof(place.ime)); fgets(place.ime, sizeof(place.ime), stdin); printf("Prezime: "); fgets(place.prezime, sizeof(place.prezime), stdin); do{ printf("Matbr (0 za kraj): "); fgets(buffer, sizeof(buffer), stdin); place.matbr=atol(buffer); } while(place.matbr<0); if(place.matbr==0) break; do{ printf("Placa: "); fgets(buffer, sizeof(buffer), stdin); place.placa=atof(buffer); } while(place.placa>=10000); printf("Oznaka: "); place.oznaka=getchar(); getchar(); if(fwrite(&place, sizeof(place), 1, fin)==1){ printf("Podaci su uspjesno pohranjeni!\n\n"); } else { printf("Greska pri pohrani podataka!\n\n"); } /* citanje */ rewind(fin); while (1) { place.placa = ftell(fin) / sizeof(place) + 1; fread(&place, sizeof(place), 1, fin); if (feof(fin)) break; if (place.placa > granica) printf("Ime: %s\nPrezime: %s\nMatbr: %ld\nPlaca: %f\nOznaka: %c\n\n", place.ime, place.prezime, place.matbr, place.placa, place.oznaka); } } fclose(fin); printf("Kraj unosa!"); getche(); return 0; }