All pastes #469053 Raw Edit

Untitled

public text v1 · immutable
·published 2007-05-03 14:45 UTC
rendered paste body
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <string.h>
#include <strings.h>

#define INITIAL 10

/*
typedef struct character charact_t;
struct character {
    char* characteristics;
    charact_t* nextcharac;
};
  */

char*
strdup(const char *s1);

typedef struct finger finger_t;
struct finger {
    int fnum;
    char** chracs;
    finger_t* next;
};


typedef struct record record_t;
struct record

{
    int id;
    char* desc;
    finger_t* fingers;
    record_t* left;
    record_t* right;

};

typedef struct tree tree_t;
struct tree
{
    record_t *root;
};

/*
#include "treeops.c"
#include "listops.c"
*/

static int queries_handled = 0;    /* Number of queries you have completed */


int query_count()
{
    return(queries_handled);
}


void load_fingerprints(FILE *fingerprints)
{

}

void process_queries(FILE *queries)
{

}

tree_t
*make_empty_tree(void)
{
    tree_t *tree;
    tree = malloc (sizeof (tree_t));
    assert (tree!=NULL);
    tree->root = NULL;
    return tree;
}

record_t*
recursive_insert (record_t* root, record_t *new)
{
    if(root==NULL) {
        return new;
    }
    else if (new->id <root->id)
    {
        root->left=recursive_insert (root->left, new);
    }else if (new->id <root->id) {
        root->right=recursive_insert (root->right, new);
    }
    return root;
}

tree_t*
insert_in_order (tree_t* tree, record_t* record) {
    /*insert record into tree*/
    tree->root = recursive_insert (tree->root, record);
    return tree;
}

finger_t*
build_one_finger (FILE* line) {

    int c,i=0;
    finger_t* f;
    int fingernum, num_characteristics=0;
    char ** characteristics;
    char temp [100];

    /*read in finger num & store it in temp
     * do that with getc until ':'
     * */

    while ((c=fgetc(line)) != ':') {
            temp[i]=c;
            i++;
          }

    temp[i] = '\n';


    fingernum=atoi(temp);

    characteristics = malloc (INITIAL *sizeof(*characteristics) );

    /* loop in the rest of the line and store each individual string into temp
     * this loop ends when it reaches end of the line */
    i=0;

    while ((c=fgetc(line)) !='\n') {

        while (c == ' ') {
            /*skips past spaces before the first characteristics*/

        }

        while (c !=' ') {
            temp[i]=c;
            i++;
        }
        temp[i] = '\n';
        i=0;

        characteristics[num_characteristics] = strdup(temp);
        num_characteristics++;

        /* end of loop */


    }

    f = malloc(sizeof(*f));

    f->fnum = fingernum;
    f->chracs = characteristics;
    f->next = NULL;

    return f;

}

record_t*
build_one_record (finger_t *f, int id, char *desc)
{
    record_t* r;

    r = malloc(sizeof(*r));

    r->fingers = f;
    r->id = id;
    r->desc=desc;
    r->left = NULL;
    r->right = NULL;

    return r;

}



void load_records(FILE *fp)
{
    int id,c;
    char *desc, *line;
    char temp2 [100];
    int i=0;
    FILE* tempfilepointer;

    finger_t *f_head = NULL, *f_tail = NULL;
    finger_t *newfinger = NULL;

    tree_t *rtree = NULL;
   /* rtree=make_empty_tree();*/
    record_t *newrecord = NULL;

    tempfilepointer = fopen("line", "w");

    while ((c=fgetc(fp)) !=EOF) {
    /* record loop, stop at the end of file
      */

        while(c != '\n') {

            /*read in the id, store*/
            if (c == '#') {
                while (c !=' ') {
                    temp2[i]=c;
                    i++;
                }
                temp2[i]='\n';
                id= atoi(temp2);
                i=0;

                while (c == ' ') {
                    /*skips past the space*/
                }

                /*read in the text, store*/

                while (c != '\n') {
                    temp2[i]=c;
                    i++;
                }
                temp2[i]='\n';
                desc= temp2;
                i=0;
                /*get one line*/

           }else {
                while (c!='\n') {
                    temp2[i]=c;
                    i++;
                }

                temp2[i]='\n';
                line= temp2;
            }
            i=0;

            if (line!="") {
                fprintf(tempfilepointer, "%s\n", line);
                newfinger = build_one_finger (tempfilepointer);

                if (f_head == NULL) {
                    f_head = newfinger;
                    f_tail = newfinger;
                }else {
                    f_tail->next = newfinger;
                    f_tail = newfinger;
                }
            }
        }


        /*get another line*/

    }
        /*fingers have all been read in at this point*/

        newrecord = build_one_record(f_head, id, desc);

        /*we have a new record!*/

        /*insert record into tree*/
        rtree=insert_in_order (rtree,newrecord);


        /*
        if (rtree == NULL)

        {

            rtree = newrecord;
        }
        else

*/


}