Algorithmique-Programmation en C
TPs 2 et 3 - Année 2005-2006
Les chaînes de caractères


Les fonctions de chaines de caractères se trouvent dans la documentation C sur votre machine.
Consultez-la pour pouvoir faire les exercices de ce TP


Exercice 0 : faire afficher une phrase déclarée en constante

1) taper le programme suivant (attention certaines lignes sont en commentaires, les laisser en commentaires)

/********************************************************/ 
/*                déclarations globales                 */ 
/********************************************************/ 
#include <stdio.h> 
char *lettre; 
char phrase1[]="alors, comment ça va?"; 
char phrase2[]="ça va bien, merci, et vous?"; 
int i; 
/********************************************************/ 
/*        programme principal : un seul par application */ 
/********************************************************/ 
int main (void) 
{ 
    
lettre=phrase1; 
    
for (i=0;i<30;i++) 
    
{
        
printf("lettre No%d : \'%c\',son code est %d, son adresse est %p\n",
               
i,*lettre, (unsigned char) *lettre,lettre); 
        
lettre++; 
    
} 
    
    
/*printf("%s\n",phrase1);    */  /* 1 */
    
/*lettre=phrase1;            */  /* 2 */
    
/* while (*lettre!=       )  */  /* 3 */
    
/* {                         */  /* 4 */
    
/*     printf("%c",*lettre); */  /* 5 */
    
/*     lettre++;             */  /* 6 */
    
/* }                         */  /* 7 */
    
/* printf("\n");             */  /* 8 */
    
    
return 0;
} 

Compilez et exécuter le programme, afin de repérer le caractère qui finit la phrase 1, avant que ne débute la phrase 2.

2) Décommenter la ligne 1. Vous pouvez constater à l'exécution que le format %s appliqué au pointeur phrase1 permet d'afficher seulement la phrase 1.

3) Décommentez les lignes suivantes, et exécutez après avoir complété la ligne 3, dont une partie a été effacée , afin d'obtenir le même résultat que par l'instruction de la ligne 1.


Exercice 1 : faire afficher une phrase saisie au clavier

On saisira cette fois au clavier la phrase, au lieu de la déclarer en constante.

On la déclarera par char phrase[128];

Examiner les résultats obtenus.


Exercice 2 : afficher le nombre de mots d'une phrase

  1. la phrase est donnée par une constante au debut du programme et on décide que le nombre de mots est le nombre d'espaces +1.
  2. on reprend la question 1, et on décide que plusieurs caractères "espace" qui se suivent sont équivalents à 1 seul.
  3. on reprend la question 2, et on décide qu'un espace en début ou en fin de phrase n'est pas à considérer.
  4. on reprend la question 3, et on décide d'ignorer les caractères de ponctuation (équivalents à des espaces).

Jeu d'essai

"alors, comment ça va?"             Q1 :  4 mots  Q2 : 4 mots  Q3 : 4 mots Q4 : 4 mots
"alors,   comment ça          va?"  Q1 : 16 mots  Q2 : 4 mots  Q3 : 4 mots Q4 : 4 mots
"  alors,  comment  ça   va?   "    Q1 : 14 mots  Q2 : 6 mots  Q3 : 4 mots Q4 : 4 mots
"  alors ,   comment  ça  va ? "    Q1 : 14 mots  Q2 : 8 mots  Q3 : 6 mots Q4 : 4 mots

Exercice 3 : afficher  le nombre de lettres minuscules, majuscules et autres d'une phrase

On conviendra que les voyelles accentuées ne font pas partie des lettres minuscules, mais des autres caractères.

Jeu d'essai

    "C'est Dieu qui a créé ce monde-là ?"
    minuscules : 20    majuscules : 2    autres : 6

Exercice 4 : code secret

  1. remplacer dans la phrase  "Commént àllèz-voùs?" les voyelles accentuées à, é, è, ù par des voyelles non accentuées.
  2. remplacer dans la phrase obtenue toutes les lettres par le caractère obtenu en ajoutant un nombre donné au code

Phrase à tester

"Commént àllèz-voùs?" qui devient  "Comment allez-vous?" puis, en retirant 16 au code des lettres "3_]]U^d Q\\Uj-f_ ec?"


Exercice 5 : palindrome

Un palindrome est un mot qui, retourné , est identique à lui-même, comme "elle"

  1. retourner une chaine ch (on la supposera sans espace)
  2. si la chaine retournée est identique à ch, afficher que c'est un palindrome, sinon, que ce n'en est pas un.
  3. reprendre la question précédente en supprimant les espaces de la chaine initiale.

Palindrome célèbre à tester

"esope reste ici et se repose" qu'on écrira "esoperesteicietserepose"