Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- //definicja typu danych przechowujaca dane z rekordu
- typedef struct {
- int member_no;
- char last_name[100];
- char first_name[100];
- char middleinitial;
- char title[100];
- int copy_no;
- char author[100];
- char out_date[20];
- char due_date[20];
- char fine_assessed[20];
- char fine_paid[20];
- char fine_remaining[20];
- }library;
- //funkcja zliczania rekordow w pliku
- int count_records(FILE *input){
- char buff[1000];
- int i=0;
- while(!feof(input)){ //szukanie konca pliku
- fgets(buff,sizeof(buff),input);
- if(strstr(buff,"<UL>")) //szukanie <UL> w pliku
- i++;
- }
- return i;
- }
- //funkcja usuwa zbędne znaczniki html
- void trimTags(char *source){
- int size, i=1, poz=0;
- char buff[1000];
- size=strlen(source);
- while(i < size){
- if(source[i]=='<'){
- if(source[i+2]=='>')
- i+=3;
- else if (source[i+3]=='>')
- i+=4;
- else if (source[i+4]=='>')
- i+=5;
- }
- else{
- poz=strlen (strchr(source+i, '<'));
- strncpy (buff, source+i,strlen(source) - i - poz);
- buff[strlen(source) -i - poz]='\0';
- break;
- }
- }
- strcpy(source , buff);
- }
- //sprawdzanie poszczegolnych linijek w rekordzie w celu okreslenia typu danych i przypisania ich odpowiedniemu plikowi w strukturze
- library read_records(int record_no, FILE *input){
- library record;
- char buff[1000];
- char *value;
- int i=0;
- while(i<record_no){
- fgets(buff,sizeof(buff),input);
- if(strstr(buff,"<UL>") !=NULL){
- i++;}
- }
- for(i=0;i<12;i++){
- fgets(buff,sizeof(buff),input);
- if((value=strstr(buff,"author:")) !=NULL){
- value=strstr(value,"\t");
- trimTags(value);
- printf("%s\n", value);
- strcpy(record.author, value); }
- else if((value=strstr(buff,"Member no:")) !=NULL){
- value=strstr(value,"\t");
- trimTags(value);
- printf("%s\n", value); }
- else if((value=strstr(buff,"lastname:")) !=NULL){
- value=strstr(value,"\t");
- trimTags(value);
- printf("%s\n", value); }
- else if((value=strstr(buff,"firstname:")) !=NULL){
- value=strstr(value,"\t");
- trimTags(value);
- printf("%s\n", value); }
- else if((value=strstr(buff,"middleinitial:")) !=NULL){
- value=strstr(value,"\t");
- trimTags(value);
- printf("%s\n", value); }
- else if((value=strstr(buff,"Copy no:")) !=NULL){
- value=strstr(value,"\t");
- trimTags(value);
- printf("%s\n", value); }
- else if((value=strstr(buff,"title:")) !=NULL){
- value=strstr(value,"\t");
- trimTags(value);
- printf("%s\n", value); }
- else if((value=strstr(buff,"Out date:")) !=NULL){
- value=strstr(value,"\t");
- trimTags(value);
- printf("%s\n", value); }
- else if((value=strstr(buff,"Due date:")) !=NULL){
- value=strstr(value,"\t");
- trimTags(value);
- printf("%s\n", value); }
- else if((value=strstr(buff,"Fine assessed:")) !=NULL){
- value=strstr(value,"\t");
- trimTags(value);
- printf("%s\n", value); }
- else if((value=strstr(buff,"Fine paid:")) !=NULL){
- value=strstr(value,"\t");
- trimTags(value);
- printf("%s\n", value); }
- else if((value=strstr(buff,"Fine remaining:")) !=NULL){
- value=strstr(value,"\t");
- trimTags(value);
- printf("%s\n", value); }
- }
- return record;
- }
- int main(int argc, char *argv[]){
- FILE *input;
- int c_records;
- int user_record_no=1;
- if(argc==2){
- if((input=fopen(argv[1], "r"))==NULL){ //próba otwarcia pliku
- printf("Nie mozna otworzyc pliku\n");
- exit(0); //zamkniecie programu
- }
- }
- else {
- printf("Podales bledne argumenty\n");
- exit(0);
- }
- c_records=count_records(input); //pobranie liczby rekordow na podstawie ilosci <BR>
- printf("Ilosc rekordow: %d\n",c_records);
- rewind(input);
- printf("Podaj numer rekordu z zakresy od 1 do %d rekordow:",c_records);
- scanf("%d", &user_record_no); //wybor konkretnego rekordu
- read_records(user_record_no, input);
- fclose(input); //zamkniecie strumienia pliku
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement