Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.45 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4.  
  5. //definicja typu danych przechowujaca dane z rekordu
  6. typedef struct {
  7.        int member_no;
  8.        char last_name[100];
  9.        char first_name[100];
  10.        char middleinitial;
  11.        char title[100];
  12.        int copy_no;
  13.        char author[100];
  14.        char out_date[20];
  15.        char due_date[20];
  16.        char fine_assessed[20];
  17.        char fine_paid[20];
  18.        char fine_remaining[20];
  19.        }library;
  20.  
  21. //funkcja zliczania rekordow w pliku
  22. int count_records(FILE *input){
  23.        char buff[1000];
  24.        int i=0;
  25.        
  26.        while(!feof(input)){                                             //szukanie konca pliku
  27.                            fgets(buff,sizeof(buff),input);
  28.                            if(strstr(buff,"<UL>"))                      //szukanie <UL> w pliku
  29.                            i++;
  30.                            }
  31.        return i;
  32.        }
  33.        
  34. //funkcja usuwa zbędne znaczniki html
  35. void trimTags(char *source){
  36.  
  37.      int size, i=1, poz=0;
  38.      char buff[1000];
  39.      
  40.      size=strlen(source);
  41.  
  42.      while(i < size){
  43.            if(source[i]=='<'){
  44.                         if(source[i+2]=='>')
  45.                                        i+=3;
  46.                          else if (source[i+3]=='>')
  47.                                         i+=4;
  48.                          else if (source[i+4]=='>')
  49.                                         i+=5;
  50.            }
  51.            else{
  52.                 poz=strlen (strchr(source+i, '<'));
  53.                  strncpy (buff, source+i,strlen(source) - i - poz);
  54.                  
  55.                  buff[strlen(source) -i - poz]='\0';
  56.  
  57.                  break;
  58.                  }
  59.      }
  60.      
  61.      
  62.      
  63.      strcpy(source , buff);
  64.  
  65.      }
  66.  
  67.  
  68.  
  69. //sprawdzanie poszczegolnych linijek w rekordzie w celu okreslenia typu danych i przypisania ich odpowiedniemu plikowi w strukturze
  70. library read_records(int record_no, FILE *input){
  71.         library record;
  72.         char buff[1000];
  73.         char *value;
  74.         int i=0;
  75.  
  76.         while(i<record_no){
  77.                            fgets(buff,sizeof(buff),input);
  78.                            if(strstr(buff,"<UL>") !=NULL){
  79.                            i++;}
  80.                            }
  81.         for(i=0;i<12;i++){
  82.                           fgets(buff,sizeof(buff),input);
  83.  
  84.                           if((value=strstr(buff,"author:")) !=NULL){
  85.                           value=strstr(value,"\t");
  86.                           trimTags(value);
  87.                           printf("%s\n", value);
  88.                           strcpy(record.author, value);                         }
  89.                           else if((value=strstr(buff,"Member no:")) !=NULL){
  90.                           value=strstr(value,"\t");
  91.                           trimTags(value);
  92.                           printf("%s\n", value);                          }
  93.                           else if((value=strstr(buff,"lastname:")) !=NULL){
  94.                           value=strstr(value,"\t");
  95.                           trimTags(value);
  96.                           printf("%s\n", value);                          }
  97.                           else if((value=strstr(buff,"firstname:")) !=NULL){
  98.                           value=strstr(value,"\t");
  99.                           trimTags(value);
  100.                           printf("%s\n", value);                          }
  101.                           else if((value=strstr(buff,"middleinitial:")) !=NULL){
  102.                           value=strstr(value,"\t");
  103.                           trimTags(value);
  104.                           printf("%s\n", value);                          }
  105.                           else if((value=strstr(buff,"Copy no:")) !=NULL){
  106.                           value=strstr(value,"\t");
  107.                           trimTags(value);
  108.                           printf("%s\n", value);                          }
  109.                           else if((value=strstr(buff,"title:")) !=NULL){
  110.                           value=strstr(value,"\t");
  111.                           trimTags(value);
  112.                           printf("%s\n", value);                          }
  113.                           else if((value=strstr(buff,"Out date:")) !=NULL){
  114.                           value=strstr(value,"\t");
  115.                           trimTags(value);
  116.                           printf("%s\n", value);                          }
  117.                           else if((value=strstr(buff,"Due date:")) !=NULL){
  118.                           value=strstr(value,"\t");
  119.                           trimTags(value);
  120.                           printf("%s\n", value);                          }
  121.                           else if((value=strstr(buff,"Fine assessed:")) !=NULL){
  122.                           value=strstr(value,"\t");
  123.                           trimTags(value);
  124.                           printf("%s\n", value);                          }
  125.                           else if((value=strstr(buff,"Fine paid:")) !=NULL){
  126.                           value=strstr(value,"\t");
  127.                           trimTags(value);
  128.                           printf("%s\n", value);                          }
  129.                           else if((value=strstr(buff,"Fine remaining:")) !=NULL){
  130.                           value=strstr(value,"\t");
  131.                           trimTags(value);
  132.                           printf("%s\n", value);                          }
  133.                           }
  134.                           return record;
  135.         }
  136.  
  137.  
  138. int main(int argc, char *argv[]){
  139.  
  140.     FILE *input;
  141.     int c_records;
  142.     int user_record_no=1;
  143.  
  144.     if(argc==2){
  145.                 if((input=fopen(argv[1], "r"))==NULL){                 //próba otwarcia pliku
  146.                            printf("Nie mozna otworzyc pliku\n");
  147.                            exit(0);                                    //zamkniecie programu
  148.                            }
  149.                 }
  150.     else {
  151.          printf("Podales bledne argumenty\n");
  152.          exit(0);
  153.          }
  154.     c_records=count_records(input);                                    //pobranie liczby rekordow na podstawie ilosci <BR>
  155.     printf("Ilosc rekordow: %d\n",c_records);
  156.     rewind(input);
  157.     printf("Podaj numer rekordu z zakresy od 1 do %d rekordow:",c_records);
  158.     scanf("%d", &user_record_no);                                      //wybor konkretnego rekordu
  159.     read_records(user_record_no, input);
  160.     fclose(input);                                                     //zamkniecie strumienia pliku
  161.  
  162.     return 0;
  163. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement