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

int readToTab(long* tab, char* file){
    int n = 0;
    int fd = open(file, O_RDONLY);
    if(fd == -1){
        perror("open");
        exit(1);
    }
chafiol's avatar
chafiol committed
    size_t j = 0, x=0, count = 1, sizet = 1000, nb_size = 1;
    char* tmp = malloc(sizeof(char)*sizet);
Mickael Da Silva's avatar
Mickael Da Silva committed
    memset(tmp, 0, 1000);
    char temp;
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;
            x++;
            
        }
        else if(temp == ' '){
            long t = atol(tmp);
            tab[j] = 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);
            memset(tmp, 0, sizet*nb_size);
Mickael Da Silva's avatar
Mickael Da Silva committed
            j++;
chafiol's avatar
chafiol committed
            count++;
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==sizet*nb_size){
            nb_size+=1;
            printf("size:%d nb_size:%d, sizef:%d\n", sizet, nb_size,  sizeof(char)*(sizet*nb_size));
            tmp = realloc(tmp, sizeof(char)*(sizet*nb_size));
        }
Mickael Da Silva's avatar
Mickael Da Silva committed
    }
    return n-1;
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);
    memset(tab, 0, sizeof(long)*length);
    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
}