222 lines
5.3 KiB
C
222 lines
5.3 KiB
C
#include "include/getArray.h"
|
|
#include "include/fileGestion.h"
|
|
#include "include/initialParameters.h"
|
|
// #include <string.h>
|
|
|
|
long **getlongArray(int N, int M) /* Allocate the array */
|
|
{
|
|
/* Check if allocation succeeded. (check for NULL pointer) */
|
|
int i;
|
|
long **array;
|
|
array = (long **)malloc(N * sizeof(long *));
|
|
for (i = 0; i < N; i++)
|
|
array[i] = (long *)malloc(M * sizeof(long));
|
|
return array;
|
|
}
|
|
|
|
double **getDoubleArray(int N, int M) /* Allocate the array */
|
|
{
|
|
/* Check if allocation succeeded. (check for NULL pointer) */
|
|
int i;
|
|
double **array;
|
|
array = (double **)malloc(N * sizeof(double *));
|
|
for (i = 0; i < N; i++)
|
|
array[i] = (double *)malloc(M * sizeof(double));
|
|
return array;
|
|
}
|
|
|
|
void fillArrayWithRawData(char *rawDataFileName, long **p, int N, int M)
|
|
{
|
|
int i = 0;
|
|
// char *buffer;
|
|
// size_t bufsize = 200;
|
|
// buffer = (char *)malloc(bufsize * sizeof(char));
|
|
// char *token;
|
|
|
|
FILE *f = fopen(rawDataFileName, "r");
|
|
|
|
long t, c1, c2, c3, c4, c5, c6, c7, c8;
|
|
switch (M)
|
|
{
|
|
case 2:
|
|
while (fscanf(f, "%ld,%ld[^\n] ", &t, &c1) != EOF)
|
|
{
|
|
p[i][0] = t;
|
|
p[i][1] = c1;
|
|
i++;
|
|
}
|
|
break;
|
|
case 3:
|
|
while (fscanf(f, "%ld,%ld,%ld[^\n] ", &t, &c1, &c2) != EOF)
|
|
{
|
|
p[i][0] = t;
|
|
p[i][1] = c1;
|
|
p[i][2] = c2;
|
|
i++;
|
|
}
|
|
break;
|
|
case 4:
|
|
while (fscanf(f, "%ld,%ld,%ld,%ld[^\n] ", &t, &c1, &c2, &c3) != EOF)
|
|
{
|
|
p[i][0] = t;
|
|
p[i][1] = c1;
|
|
p[i][2] = c2;
|
|
p[i][3] = c3;
|
|
i++;
|
|
}
|
|
break;
|
|
case 5:
|
|
while (fscanf(f, "%ld,%ld,%ld,%ld,%ld[^\n] ", &t, &c1, &c2, &c3, &c4) != EOF)
|
|
{
|
|
p[i][0] = t;
|
|
p[i][1] = c1;
|
|
p[i][2] = c2;
|
|
p[i][3] = c3;
|
|
p[i][4] = c4;
|
|
i++;
|
|
}
|
|
break;
|
|
case 6:
|
|
while (fscanf(f, "%ld,%ld,%ld,%ld,%ld,%ld[^\n] ", &t, &c1, &c2, &c3, &c4, &c5) != EOF)
|
|
{
|
|
p[i][0] = t;
|
|
p[i][1] = c1;
|
|
p[i][2] = c2;
|
|
p[i][3] = c3;
|
|
p[i][4] = c4;
|
|
p[i][5] = c5;
|
|
i++;
|
|
}
|
|
break;
|
|
case 7:
|
|
while (fscanf(f, "%ld,%ld,%ld,%ld,%ld,%ld,%ld[^\n] ", &t, &c1, &c2, &c3, &c4, &c5, &c6) != EOF)
|
|
{
|
|
p[i][0] = t;
|
|
p[i][1] = c1;
|
|
p[i][2] = c2;
|
|
p[i][3] = c3;
|
|
p[i][4] = c4;
|
|
p[i][5] = c5;
|
|
p[i][6] = c6;
|
|
i++;
|
|
}
|
|
break;
|
|
case 8:
|
|
while (fscanf(f, "%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld[^\n] ", &t, &c1, &c2, &c3, &c4, &c5, &c6, &c7) != EOF)
|
|
{
|
|
p[i][0] = t;
|
|
p[i][1] = c1;
|
|
p[i][2] = c2;
|
|
p[i][3] = c3;
|
|
p[i][4] = c4;
|
|
p[i][5] = c5;
|
|
p[i][6] = c6;
|
|
p[i][7] = c7;
|
|
i++;
|
|
}
|
|
break;
|
|
case 9:
|
|
while (fscanf(f, "%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld[^\n] ", &t, &c1, &c2, &c3, &c4, &c5, &c6, &c7, &c8) != EOF)
|
|
{
|
|
p[i][0] = t;
|
|
p[i][1] = c1;
|
|
p[i][2] = c2;
|
|
p[i][3] = c3;
|
|
p[i][4] = c4;
|
|
p[i][5] = c5;
|
|
p[i][6] = c6;
|
|
p[i][7] = c7;
|
|
p[i][8] = c8;
|
|
i++;
|
|
}
|
|
break;
|
|
default:
|
|
printf("bad column size -> time + nbr captor\n");
|
|
}
|
|
|
|
/************** Debug part **************/
|
|
// for (int ii = 0; ii < nRowRawData; ii++)
|
|
// {
|
|
// for (int y = 0; y < nCol; y++)
|
|
// {
|
|
// printf("%ld,", p[ii][y]);
|
|
// if (y == nCol - 1)
|
|
// printf("lol\n");
|
|
// }
|
|
// }
|
|
fclose(f);
|
|
}
|
|
|
|
/**
|
|
* @brief print all the element of a bidimensionnal array p of shape : N x M
|
|
*/
|
|
void printArrayData(long **p, int N, int M)
|
|
{
|
|
for (int i = 0; i < N; i++)
|
|
{
|
|
printf("line n°%d : ", i);
|
|
for (int j = 0; j < M; j++)
|
|
{
|
|
printf("%ld , ", p[i][j]);
|
|
if (j == (M - 1))
|
|
printf("\n");
|
|
}
|
|
}
|
|
}
|
|
/**
|
|
* @brief verify if all the element of an array are not NULL, return
|
|
*
|
|
* @param p array to check
|
|
* @param N number of rows in p
|
|
* @param M number of columns in p
|
|
* @return true if the array contaign no NULL element
|
|
* @return false if at least one element is null
|
|
*/
|
|
bool checkArrayFullyFill(long **p, int N)
|
|
{
|
|
for (int i = 0; i < N; i++)
|
|
{
|
|
if (p[i][0] == '\0')
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* @brief free memory allocate to an array p
|
|
*
|
|
* @param p array to free memory
|
|
* @param N number of rows in array
|
|
*/
|
|
void freeArray(long **p, int N)
|
|
{
|
|
for (int i = 0; i < N; i++)
|
|
{
|
|
free(p[i]);
|
|
}
|
|
free(p);
|
|
}
|
|
|
|
/**
|
|
* @brief Get the Raw Data Array object
|
|
*
|
|
* @param rawDataFileName name of the file to use to file the array
|
|
* @param N numbers of rows to have i the array
|
|
* @param M numbers of columns to have i the array
|
|
* @return long** the array fill with raw data
|
|
*/
|
|
long **getRawDataArray(char *rawDataFileName)
|
|
{
|
|
long **p;
|
|
p = getlongArray(nRowRawData, nCol);
|
|
fillArrayWithRawData(rawDataFileName, p, nRowRawData, nCol);
|
|
// if(checkArrayFullyFill(p,nRow)){
|
|
// clearRawData(N);
|
|
return p;
|
|
/*}
|
|
else{
|
|
return NULL;
|
|
}*/
|
|
} |