#include #include #define VRAI 1 #define FAUX 0 char T [BUFSIZ] ; /************************************************************************/ int compare (int i, char * chaine) /* i est un indice dans le tableau T, chaine est une chaîne à calquer sur T[i] */ { int j = 0 ; while (T[i+j] == chaine[j] && j < strlen(chaine)) j++; return j==strlen(chaine) ; } /************************************************************************/ void saisie_balise (char * bo, char * bf) { char xx[25] ; printf("Balise recherchée ? ") ; scanf("%s",xx) ; strcpy(bo,"<") ; strcat(bo,xx) ; strcat(bo,">") ; strcpy(bf,"") ; } /************************************************************************/ void saisie_texte (char * texte, char * n) /* Fonction de remplissage de la chaîne texte. Méthode un peu brutale, la fonction n'étant destinée qu'à tester le programme */ { FILE * f ; int l ; char tampon[BUFSIZ] ; /* strcpy(texte, "Ceci est une chaine très longue
") ;*/ f = fopen(n,"r") ; l = 0 ; texte[0] = '\0' ; while (l < BUFSIZ && fgets(tampon,BUFSIZ,f) != NULL) { strcat(texte, tampon) ; l = strlen(texte) ; } } /************************************************************************/ main(int argc, char *argv[]) /************************************************************************/ { int i, in; char gauche[28], droite[28]; saisie_texte(T,argv[1]) ; saisie_balise(gauche, droite) ; /* Version du corrigé. Fonctionne correctement, mais affiche aussi la balise gauche. in = FAUX ; for (i=0; i