/*=================================================*\ Lundi 4 mars 2013 Arash HABIBI question6.c \*=================================================*/ #include #include #include #include #include #include #include #include #include #define MAX_WORD 30 //--------------------------------------------- int** creerNTubes(int N) { int **p; p = (int**)calloc(N,sizeof(int*)); int n; for(n=0;n0) { nb_cars = read(filein,&lu,1); if(nb_cars>0) { car_est_lettre = (!isspace(lu))&&(!ispunct(lu)); if(car_precedent_est_lettre && (car_est_lettre==0)) nb_mots++; car_precedent_est_lettre = car_est_lettre; } else if(car_est_lettre) // si le fichier finit par une lettre nb_mots++; } return(nb_mots); } //--------------------------------------------- void litListeMots(int filein, char **mots) { int nb_cars, indice_mot=0, indice_car=0; char lu, car_est_lettre=0, car_precedent_est_lettre=0; lseek(filein,0,SEEK_SET); while(nb_cars>0) { nb_cars = read(filein,&lu,1); if(nb_cars>0) { car_est_lettre = (!isspace(lu))&&(!ispunct(lu)); if(car_est_lettre) { mots[indice_mot][indice_car] = tolower(lu); indice_car++; } if(car_precedent_est_lettre && (car_est_lettre==0)) { indice_mot++; indice_car=0; } car_precedent_est_lettre = car_est_lettre; } } } //--------------------------------------------- int estCorrecte(char *mot, int nb_mots, char **dictionnaire) { int N = strlen(mot); int n; for(n=0;n ... \n\n",argv[0]); return 1; } else { char** dictionnaire; int nb_mots_dico = prepareDictionnaire(argv[1],&dictionnaire); int nb_fichiers = argc - 2; int **p_pere_fils = creerNTubes(nb_fichiers); int **p_fils_pere = creerNTubes(nb_fichiers); pid_t pid; int est_fils = 0; int n; for(n=0;(n %s : mot : %s\n",argv[n+2],mots[nm]); N = 1 + strlen(mots[nm]); write(p_fils_pere[n][1],&N,4); write(p_fils_pere[n][1],mots[nm],N); int est_ok; read(p_pere_fils[n][0],&est_ok,4); if(est_ok==0) printf("fichier %s : le mot %s est INcorrect.\n",argv[n+2],mots[nm]); } N=0; write(p_fils_pere[n][1],&N,4); } else // pere { est_fils=0; close(p_pere_fils[n][0]); close(p_fils_pere[n][1]); } } // Une fois que tous les fils ont été crées, que fait le père ? if(est_fils==0) { char *est_mort; est_mort = (char*)calloc(nb_fichiers,sizeof(char)); int nb_fils_vivants = nb_fichiers; while(nb_fils_vivants>0) { char mot[MAX_WORD]; int N; int n; for(n=0;n