EXERCICE II

Pointeurs (chaînes de caractères)

 

1.      Ecrire la fonction nmots_ch qui retourne comme résultat le nombre de mots contenus dans une chaîne de caractères donnée ch. Utiliser une variable logique, la fonction isspace et une variable d'aide n.

·        Ecrire une fonction gets_li à entrer une chaîne de caractères (nombre de caractères <= 62)

·        Utiliser ces fonctions à trouver le nombre de mots dans une chaîne, entrée par clavier.

 

#include <stdio.h>

#include <ctype.h>

#define MAX 62

void gets_li(char *s);

int nmots_ch(char *ch);

void main()

 {             char ch[MAX];

               printf("Entrer une chaine.\n");

               gets_li(ch);

               printf("La chaine %s a %d mots.\n",ch,nmots_ch(ch));

 }

void gets_li(char *s)

 {             char c;

               int i=0;

               printf("Entrer des caracteres\n");

               while(c=getchar(),c!='\n'&&c!=EOF&&i<MAX-1)

                           { *s++=c; i++; }

               *s='\0';

 }

int nmots_ch(char *ch)

{

 /* Variables locales */

               int n;                                         /* nombre de mots */

               int dans_mot;             /* indicateur logique : */

                                                               /* vrai si ch pointe a l'interieur d'un mot */

               dans_mot=0;

               for (n=0; *ch; ch++)

                           if (isspace(*ch))

                                       dans_mot=0;

                           else if (!dans_mot)

                             {

                                       dans_mot=1;

                                       n++;

                             }

               return n;

}

 

2.      Modifier le programme de p.1 en ajoutant la fonction mot_ch qui retourne un pointeur sur le n-ième mot d'une chaîne ch s'il existe, sinon un pointeur sur le symbole de fin de chaîne

3.      Modifier le programme de p.2 en ajoutant la fonction egal_n_ch qui retourne la valeur 1 si les n premiers caractères de ch1 et ch2 sont égaux, sinon la valeur 0. (Si n est plus grand que la longueur de ch1 ou de ch2, le résultat peut être 1 ou 0).

4.      Modifier le programme de p.3 en ajoutant la fonction cherche_ch. Utiliser la fonction egal_n_ch et strlen. cherche_ch doit retourner un pointeur sur la première apparition de ch2 dans ch1, sinon un pointeur sur le symbole de fin de chaîne.