#include // On suppose la taille des mots bornée à TM (Taille Mots) #define TM 22 // On suppose le nombre de mots borné par NMAX #define NMAX 100 // Variable(s) globale(s) char affixes[NMAX][TM] ; int avant(char x[], char y[]) { int i=0 ; while (x[i] == y[i] && x[i] != '\0') i++ ; if (x[i] == '\0') return 1 ; return (x[i] < y[i]) ; } void echanger( int a, int b) { char t[TM] ; int i ; for (i=0 ; (t[i] = affixes[a][i]) != '\0' ; i++) ; for (i=0 ; (affixes[a][i] = affixes[b][i]) != '\0' ; i++) ; for (i=0 ; (affixes[b][i] = t[i]) != '\0' ; i++) ; } main(int argc, char * argv[]) { FILE * fi, * fo ; char mot[TM], pref[TM], suff[TM] ; int i, j, k, n, l, d; int nb_aff = 0 ; // On suppose que argv[1] est le nom du fichier // Contrôle minimal sur les entrées-sorties if ((fi = fopen(argv[1], "r")) == (FILE *) NULL) exit(1) ; if ((fo = fopen("sortie", "w")) == (FILE *) NULL) exit(1) ; // On suppose que argv[2] est la taille des affixes n = atoi(argv[2]) ; while (fgets(mot,TM,fi) != NULL) { // Remplacement du \n par \0 + longueur for (l=0 ; mot[l] != '\n' ; l++) ; mot[l] = '\0' ; // Découpage du préfixe (on vérifie que le mot n'est pas trop court) for (i=0 ; i