#include "./Include/getArray.h" #include "./Include/fileGestion.h" #include "./Include/initialParameters.h" // #include 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; }*/ }