#include #include #include #include #define CUID_TAB_SIZE 20 void freemem(char *_query, char *_increment, char *_pattern){ free(_query); free(_increment); free(_pattern); } void getCustomerID_String(char *_query, char **_cuID){ char *query = NULL; char *start; char *stop; char * increment = NULL; char *pattern = NULL; int i = 0; if( (query = (char*)malloc(strlen(_query)+1)) == NULL){ printf("L'allocation de la mémoire a échoué\n"); exit(-1); } else strcpy(query, _query); if( (pattern = (char*)malloc(5)) == NULL){ printf("L'allocation de la mémoire a échoué\n"); exit(-1); } strcpy(pattern, "cu"); if( (increment = (char*)malloc(5)) == NULL){ printf("L'allocation de la mémoire a échoué\n"); exit(-1); } for(i = 1 ; i <= CUID_TAB_SIZE; i++){ if( (snprintf(increment, 2, "%d", i)) < 0){ printf("La conversion a echouer\n"); freemem(query, increment, pattern); exit(-1); } strcat(pattern, increment); strcat(pattern, "="); if((start = strstr(query, pattern)) == NULL){ // printf("La chaine %s n'a pas était trouvés!!!!\n", pattern); break; } else{ if((stop = strstr(start, "&")) == NULL) printf("Le caractère '&' n'a pas était trouvés!!!!\n"); else{ if( (_cuID[i] = (char*)realloc((char*)_cuID[i], i * strlen(start) + 1)) == NULL){ // if( (_cuID[i] = (char*)malloc(strlen(_query) + 1)) == NULL){ printf("L'allocation de la mémoire a échoué!!\n"); freemem(query, increment, pattern); } else{ strcpy(_cuID[i], ""); strncpy(_cuID[i], start + strlen(pattern), (strlen(start) - strlen(stop)) - strlen(pattern) ); strcpy(query, stop); strcpy(start, stop); } } } strcpy(pattern, "cu"); } freemem(query, increment, pattern); } int main(){ int j; char **cuID; char *MyFile = "ExempleLog"; char *buffer; FILE *fd; FILE *sortie; char buf[1024]; time_t begin, end; struct tm * t; begin = time(NULL); t = localtime(&begin); printf("Début d'execution à %02uh %02umin %02usec\n", t->tm_hour, t->tm_min, t->tm_sec); if( (fd = fopen(MyFile, "r")) == NULL){ printf("Impossible d'ouvrir le fichier %s\n", MyFile); exit(-1); } if( (sortie = fopen("customerFile", "w+")) == NULL){ printf("Impossible d'ouvrir le fichier customerFile\n"); fclose(fd); exit(-1); } if( (cuID = (char**)malloc(CUID_TAB_SIZE * sizeof(*cuID) )) == NULL){ printf("l'allocation de la mémoire a échoué!!\n"); exit(-1); } if( (buffer = (char*)malloc(1024)) == NULL){ printf("l'allocation de la mémoire a échoué!!\n"); exit(-1); } while( (fgets(buf, 1024, fd)) != NULL){ j = 1; strncpy(buffer, buf, strlen(buf)+1); getCustomerID_String(buffer, cuID); while(cuID[j] != NULL){ if( (strcmp(cuID[j], "") != 0)){ fprintf(sortie, "cuID[%d] = %s\n", j, cuID[j]); strncpy(cuID[j], "", strlen(cuID[j])); } j++; } } if( (fclose(fd)) != 0) printf("Fermeture du fichier fd impossible\n"); if( (fclose(sortie) != 0)) printf("Fermeture du fichier sortie impossible\n"); free(cuID); end = time(NULL); t = localtime(&begin); printf("Début d'execution à %02uh %02umin %02usec\n", t->tm_hour, t->tm_min, t->tm_sec); return 0; }