Advertisement
Zeshin

Pets

May 12th, 2024
852
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.02 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct Pet{
  5.     char owner[30];
  6.     char chip[7];
  7.     float price;
  8. };
  9.  
  10. struct Pet Add_Pet(){
  11.     FILE* file;
  12.     file = fopen("animalsText.txt", "w");
  13.     if(file == NULL){
  14.         fprintf(stderr, "FILE ERROR");
  15.         exit(-1);
  16.     }
  17.     struct Pet p;
  18.     scanf("%s", p.owner);
  19.     scanf("%s", p.chip);
  20.     scanf("%4f", &p.price);
  21.     fprintf(file, "%s,%.2f\n", p.owner, p.price);
  22.     fclose(file);
  23.     return p;
  24. }
  25.  
  26. void search_by_price(struct Pet* pets, int size, float price){
  27.     int flag = 1;
  28.     for(int i=0;i<size;i++){
  29.         if(pets[i].price == price){
  30.             printf("\n%s - %s\n", pets[i].owner, pets[i].chip);
  31.             flag = 0;
  32.         }
  33.     }
  34.     if(flag){
  35.         printf("\nNo such price found!\n");
  36.     }
  37. }
  38.  
  39. void bin_search(float price){
  40.     FILE* file;
  41.     file = fopen("animalsBin.bin", "rb");
  42.     int size;
  43.     while(fread(&size, sizeof(int), 1, file)==1){
  44.         char *name =(char*)calloc(size+1, sizeof(char));
  45.         fread(name, sizeof(char), size, file);
  46.         name[size] = '\0';
  47.         char chip[8];
  48.         fread(chip, sizeof(char), 7, file);
  49.         chip[7] = '\0';
  50.         float p;
  51.         fread(&p, sizeof(float), 1, file);
  52.         if(p >= price){
  53.             printf("\nOwner: %s\n", name);
  54.             printf("Chip: %s\n", chip);
  55.             printf("Price: %.2f\n", p);
  56.         }
  57.     }
  58.     fclose(file);
  59.  
  60. }
  61.  
  62. int main(){
  63.     FILE* file;
  64.     file = fopen("animalsBin.bin", "wb");
  65.     if(file == NULL){
  66.         fprintf(stderr, "FILE ERROR");
  67.         exit(-1);
  68.     }
  69.     char name[5] = "denis";
  70.     int size = 5;
  71.     char chip[7] = "A12345B";
  72.     float price = 40;
  73.     fwrite(&size, sizeof(int), 1, file);
  74.     fwrite(name, sizeof(char), 5, file);
  75.     fwrite(chip, sizeof(char), 7, file);
  76.     fwrite(&price, sizeof(float), 1, file);
  77.     fclose(file);
  78.     //
  79.     struct Pet* pets =(struct Pet*)malloc(sizeof(struct Pet)*5);
  80.     pets[0] = Add_Pet();
  81.     search_by_price(pets, 5, 30);
  82.     bin_search(30);
  83. }
  84.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement