Skip to content
Snippets Groups Projects
utils.c 2.21 KiB
Newer Older
Mickael Da Silva's avatar
Mickael Da Silva committed
#include "utils.h"

int readToTab(long* tab, char* file){
chafiol's avatar
chafiol committed
    
Mickael Da Silva's avatar
Mickael Da Silva committed
    int fd = open(file, O_RDONLY);
    if(fd == -1){
        perror("open");
        exit(1);
    }
chafiol's avatar
chafiol committed

    int n = 0;
    int sizet = 1000, nb_size = 1;
    int nb_size_tab = 1;
    size_t x=0;
Mickael Da Silva's avatar
Mickael Da Silva committed
    char temp;
chafiol's avatar
chafiol committed

    char* tmp = malloc(sizeof(char)*sizet);
    memset(tmp, 0, sizet);
chafiol's avatar
chafiol committed
    
Mickael Da Silva's avatar
Mickael Da Silva committed
    read(fd,&temp,sizeof(char));

    while(temp != '.'){
chafiol's avatar
chafiol committed
        
        // printf("n:%d  j:%d  nb_size:%d\n", n,j,nb_size);
Mickael Da Silva's avatar
Mickael Da Silva committed
        if(temp != ' '){
            tmp[x] = temp;
chafiol's avatar
chafiol committed
            //printf("tmp[%d] = %c\n", x, temp);
Mickael Da Silva's avatar
Mickael Da Silva committed
            x++;
            
        }
chafiol's avatar
chafiol committed
        else{
Mickael Da Silva's avatar
Mickael Da Silva committed
            long t = atol(tmp);
chafiol's avatar
chafiol committed
            tab[n] = t;
chafiol's avatar
chafiol committed
            //printf("char:%c long:%d n:%d  j:%d  nb_size:%d, size:%d\n",temp,tab[j], n,j,nb_size, sizet);
chafiol's avatar
chafiol committed
            printf("Old:%s\n", tmp);
chafiol's avatar
chafiol committed
            memset(tmp, 0, sizet*nb_size);
chafiol's avatar
chafiol committed
            printf("New:%s\n", tmp);
Mickael Da Silva's avatar
Mickael Da Silva committed
            x=0;
            n++;
        }
chafiol's avatar
chafiol committed
        
Mickael Da Silva's avatar
Mickael Da Silva committed
        read(fd,&temp,sizeof(char));
chafiol's avatar
chafiol committed
        if(n==TAB_SIZE*(nb_size_tab*10)){
            nb_size_tab+=1;
            //printf("size:%d nb_size:%d, sizef:%d\n", sizet, nb_size,  sizeof(char)*(sizet*nb_size));
            tab = realloc(tab, sizeof(long)*(TAB_SIZE*10));
        }
chafiol's avatar
chafiol committed
        if(n==sizet*nb_size){
            nb_size+=1;
chafiol's avatar
chafiol committed
            //printf("size:%d nb_size:%d, sizef:%d\n", sizet, nb_size,  sizeof(char)*(sizet*nb_size));
chafiol's avatar
chafiol committed
            tmp = realloc(tmp, sizeof(char)*(sizet*nb_size));
        }
Mickael Da Silva's avatar
Mickael Da Silva committed
    }
chafiol's avatar
chafiol committed
    free(tmp);
    return n;
chafiol's avatar
chafiol committed
}

void initData(struct data* d){
    d->time = 0;
    d->comparison = 0;
    d->ct_fusion = 0;
    d->ct_parse = 0;
    d->write = 0;
}

chafiol's avatar
chafiol committed
long* generate_tab(size_t max, size_t length){
    if(length==0){
        return 0;
chafiol's avatar
chafiol committed
    }
chafiol's avatar
chafiol committed
    long* tab = malloc(sizeof(long)*length+1);
    memset(tab, 0, sizeof(long)*length+1);
chafiol's avatar
chafiol committed
    size_t index = 0;
    for(index = 0; index<length; index++){
        long p =  (long)(rand()%max);
        tab[index] = p;
chafiol's avatar
chafiol committed
    }
chafiol's avatar
chafiol committed
    
chafiol's avatar
chafiol committed
    return tab;
chafiol's avatar
chafiol committed
}

void printData(struct data d){
    printf("Time passed : %ld\n", d.time);
    printf("Number of comparison : %ld\n", d.comparison);
    printf("Number of write : %ld\n", d.write);
    printf("Call of fusion  : %ld\n", d.ct_fusion);
    printf("Call of parsing : %ld\n", d.ct_parse);
Mickael Da Silva's avatar
Mickael Da Silva committed
}