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

chafiol's avatar
chafiol committed
long* readToTab(char* file, int *sizze){
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));
chafiol's avatar
chafiol committed
    int size_tab = 0;
    while(temp != '.'){
        if(temp == ' '){
chafiol's avatar
chafiol committed
            size_tab++;
chafiol's avatar
chafiol committed
        }
        read(fd,&temp,sizeof(char));
    }
chafiol's avatar
chafiol committed
    *sizze = size_tab;
    
    lseek(fd, 0, SEEK_SET);
    long *tab = malloc(sizeof(long)*size_tab);

    read(fd,&temp,sizeof(char));
Mickael Da Silva's avatar
Mickael Da Silva committed
    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
            memset(tmp, 0, sizet*nb_size);
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
        
    }
    // for(int i  = 0; i<size_tab; i++){
    //     if(i%15 == 0)
    //         printf("i:%ld\n",tab[i]);
    //     else
    //         printf("i:%ld   ", tab[i]);
        
    // }
chafiol's avatar
chafiol committed
    free(tmp);
chafiol's avatar
chafiol committed
    return tab;
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
}