Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define FILENAME "cd.bin"
- #define FILENAME_TEMP "cd_temp.bin"
- typedef struct cd{
- char cim[20];
- char eloado[20];
- int kiadas_eve;
- float ar;
- } CD;
- void feltolt(int db);
- void listaz(void);
- void keres(char *k_eloado);
- void modosit(int kor);
- void torol(float arhatar);
- int main(void){
- int db;
- int kor;
- char keresett_eloado[20];
- float arhatar;
- printf("\nHany adatot szeretnel felvinni?");
- scanf("%d", &db);
- feltolt(db);
- listaz();
- printf("\nMelyik eloado cd-eit keresed?\n");
- scanf("%s", keresett_eloado);
- keres(keresett_eloado);
- printf("\n Melyik cd arat szeretned csokkenteni?");
- scanf("%d", &kor);
- modosit(kor);
- listaz();
- printf("\n Milyen arnal dragabb cd-ket torol?");
- scanf("%f", &arhatar);
- listaz();
- torol(arhatar);
- return 0;
- }
- void feltolt(int db){
- FILE *fp;
- int i;
- CD cd;
- fp = fopen(FILENAME, "ab");
- if(!fp) {printf("\nSikertelen fajl megnyitas."); return;}
- for(i=0; i<db; i++){
- printf("\n%d. CD cime: ", i+1); scanf("%s", cd.cim);
- printf("\n%d. CD eloadoja: ", i+1); scanf("%s", cd.eloado);
- printf("\n%d. CD kiadasi eve: ", i+1); scanf("%d", &cd.kiadas_eve);
- printf("\n%d. CD ara: ", i+1); scanf("%f", &cd.ar);
- fwrite(&cd, sizeof(CD), 1, fp);
- }
- fclose(fp);
- return;
- }
- void listaz(void){
- FILE *fp;
- int i;
- int filesize;
- CD cd;
- fp = fopen(FILENAME, "rb");
- if(!fp) {printf("Sikertelen fajl megnyitas."); return;}
- fseek(fp, 0, SEEK_END);
- filesize = ftell(fp)/sizeof(CD);
- for(i=0; i<filesize; i++){
- fseek(fp, sizeof(CD)*i, SEEK_SET);
- fread(&cd, sizeof(CD), 1, fp);
- printf("\n %d. CD cime: %s \t eloadoja: %s \t kiadasi eve: %d \t ara: %.2f,", i+1, cd.cim, cd.eloado, cd.kiadas_eve, cd.ar);
- }
- fclose(fp);
- return;
- }
- void keres(char *k_eloado){
- FILE *fp;
- int i;
- int filesize;
- CD cd;
- fp = fopen(FILENAME, "rb");
- if(!fp) {printf("Sikertelen fajl megnyitas."); return;}
- fseek(fp, 0, SEEK_END);
- filesize = ftell(fp)/sizeof(CD);
- for(i=0; i<filesize; i++){
- fseek(fp, sizeof(CD)*i, SEEK_SET);
- fread(&cd, sizeof(CD), 1, fp);
- if(strcmp(cd.eloado, k_eloado)==0){
- printf("\n %d. CD cime: %s \t eloadoja: %s \t kiadasi eve: %d \t ara: %.2f,", i+1, cd.cim, cd.eloado, cd.kiadas_eve, cd.ar);
- }
- }
- fclose(fp);
- return;
- }
- void modosit(int kor){
- FILE *fp;
- int i;
- int filesize;
- int nap;
- int ev;
- CD cd;
- char honap[4];
- fp = fopen(FILENAME, "rb+");
- if(!fp) {printf("Sikertelen fajl megnyitas."); return;}
- fseek(fp, 0, SEEK_END);
- filesize = ftell(fp)/sizeof(CD);
- sscanf(__DATE__, "%s %d %d", honap, &nap, &ev);
- for(i=0; i<filesize; i++){
- fseek(fp, sizeof(CD)*i, SEEK_SET);
- fread(&cd, sizeof(CD), 1, fp);
- if((ev-cd.kiadas_eve)>kor){
- cd.ar*=0.9;
- fseek(fp, sizeof(CD)*(-1), SEEK_CUR);
- fwrite(&cd, sizeof(CD), 1, fp);
- }
- }
- fclose(fp);
- return;
- }
- void torol(float arhatar){
- FILE *fp, *fp_temp;
- int i;
- int filesize;
- int deleted=0;
- CD cd;
- fp = fopen(FILENAME, "rb");
- if(!fp) {printf("Sikertelen fajl megnyitas."); return;}
- fp_temp = fopen(FILENAME_TEMP, "wb+");
- if(!fp_temp) {printf("Sikertelen fajl megnyitas."); return;}
- fseek(fp, 0, SEEK_END);
- filesize = ftell(fp)/sizeof(CD);
- for(i=0; i<filesize; i++){
- fseek(fp, sizeof(CD)*i, SEEK_SET);
- fread(&cd, sizeof(CD), 1, fp);
- if(cd.ar<=arhatar){
- fwrite(&cd, sizeof(CD), 1, fp_temp);
- }
- else{
- printf("\nTorolve %d. CD cime: %s \t eloadoja: %s \t kiadasi eve: %d \t ara: %.2f,", i+1, cd.cim, cd.eloado, cd.kiadas_eve, cd.ar);
- deleted++;
- }
- }
- printf("%d", deleted);
- fclose(fp);
- fp = fopen(FILENAME, "wb");
- if(!fp) {printf("Sikertelen fajl megnyitas."); return;}
- for(i=0; i<filesize-deleted; i++){
- fseek(fp_temp, sizeof(CD)*i, SEEK_SET);
- fread(&cd, sizeof(CD), 1, fp_temp);
- fwrite(&cd, sizeof(CD), 1, fp);
- }
- fclose(fp_temp);
- fclose(fp);
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment