/* * Main du programme filtre *@param argv : tableau pointant les paramères du programme *@param argc : nombre de paramètres du programme */ int main(int argc, char * const argv[]) { FILE * fichier = NULL; int *vecteur=NULL; int *ControlL = NULL; int *ControlC = NULL; int n = 0; int m = 0; verificationOptions(argv); int nbFichiers = get_nbre_domaines(argv, 1); stab2d *tableauStructures = malloc(nbFichiers*sizeof(stab2d)); stab2d unTableau; for (int i=0; i<nbFichiers; i++) { fichier = fopen(argv[(i+2)], "r"); if(fichier == NULL) { signaler_erreur(OUVERTURE_FICHIER_ERREUR); exit(1); } n = nbre_lignes_fichier(fichier); vecteur = creerVecteur(fichier, &n); m = taille_max_lignes(vecteur, n); if(!m) { signaler_erreur(FICHIER_SANS_DONNEE_ERREUR); exit(1); } unTableau.ptr = charger(fichier, vecteur, n, m); unTableau.lignes = n; unTableau.colonnes = m; tableauStructures[i] = unTableau; // fait une copie fclose(fichier); } stab2d tabFusion = fusionMatrices(tableauStructures, nbFichiers, argv[1][1]); n = tabFusion.lignes; m = tabFusion.colonnes; ControlL = control(argv, n, 'L'); ControlC = control(argv, m, 'C'); tabFusion.ptr = filter(tabFusion.ptr, &tabFusion.lignes, &tabFusion.colonnes, ControlC, ControlL); affiche_Tab2D(tabFusion); free(vecteur); free(tableauStructures); free(ControlC); free(ControlL); return 0; }
int main (int argc, char *const argv[]) { struct tab2D mat2 = {2,4,NULL}; char **p = malloc(8 * sizeof(char*)); mat2.ptr = p; p[0] = strcpy(malloc(sizeof("abc")),"abc"); p[1] = strcpy(malloc(sizeof("1F0")),"1F0"); p[2] = strcpy(malloc(sizeof("4")),"4"); p[3] = strcpy(malloc(sizeof("-2.TG")),"-2.TG"); p[4] = strcpy(malloc(sizeof("ok")),"ok"); p[5] = strcpy(malloc(sizeof("pere")),"pere"); p[6] = strcpy(malloc(sizeof("")),""); p[7] = strcpy(malloc(sizeof("inf3135")),"inf3135"); affiche_Tab2D(mat2); for(int i=0; i < 8 ; i++) free(mat2.ptr[i]); free(mat2.ptr); return 0; }
int main ( int argc, char *argv[] ) { int x=2; int ligne=0; int colonne=0; int compteur=0; int compteur2=0; char option=' '; struct tab2D matrice1; struct tab2D matrice2; // argc doit etre 1 pour que le programme s'execute// if ( argc <= 1 ) { signaler_erreur(0); return EXIT_SUCCESS; } if (!strcmp(argv[1], "-H")) { option='h'; } else if (!strcmp(argv[1], "-V")) { option='v'; } while (argv[x]!=NULL) { // argv[1] , c est le nom du fichier FILE *file = fopen( argv[x], "r" ); if ( file == NULL) { if (!strcmp(argv[x], "-L") || !strcmp(argv[x], "-C" )) { break; } signaler_erreur(0); return EXIT_SUCCESS; } fseek(file, 0L, SEEK_END); // si le fichier est vide, tableau vide if ( ftell(file) == 0 ) { if (!strcmp(argv[x], "-L") || !strcmp(argv[x], "-C" )) { break; } signaler_erreur(1); return EXIT_SUCCESS; } rewind(file); // nombre de ligne dans le fichier ligne=nbre_lignes_fichier(file); //un tableau pour contenir le nombre de colonne dans chaque linge int tableau[ligne] ; compteur2=nbre_colonnes_fichier(file, tableau,ligne); // max du colonne colonne=taille_max_lignes(tableau , ligne); // ligne sans les zeros ligne=ligneAjuster (tableau, ligne); int tab2[ligne*compteur2] ; valeurTab(file,tab2); if(compteur==0) { matrice1=charger(file,tableau,ligne,colonne,tab2); matrice1.lignes=ligne; matrice1.colonnes=colonne; } else { matrice2=charger(file,tableau,ligne,colonne,tab2); matrice2.lignes=ligne; matrice2.colonnes=colonne; matrice1=fusion(matrice1,matrice2,option); } fclose( file ); compteur++; x++; } if (argc == (x)) { affiche_Tab2D(matrice1); return EXIT_SUCCESS; } if (!strcmp(argv[x], "-L") || !strcmp(argv[x], "-C" )) { if (erreurOption(argv,x) == 1) { return EXIT_SUCCESS; } matrice1 = filter(matrice1, control(argv, matrice1.colonnes, 'C'), control(argv, matrice1.lignes, 'L')); affiche_Tab2D(matrice1); return EXIT_SUCCESS; } }