Votre IP: 38.107.191.118 
  
 
Google
 
Accueil e-mail Linux
Linux
Perl
Perl
C
Langage C
Dico
Dictionnaire
Biblio liens
Bibliothèque de liens
Index articles
Index articles
 

Date création : 12-01-2008 11:38:24
Date de la dernière modification : 16-01-2008 21:03:20
C  Vous êtes dans : Langage C Astuces / Récursivité - Exercices

Enoncé :

Calculer la longueur d'une chaîne de caractères.

Solution :


#include<stdio.h>
#define MAX 255

int strlen_recursif (char *s,int longueur);

int main ()
{
  char s[MAX];
  char ss[] ="";
  printf ("Entrez une chaine de caractères :");
  fgets (s, MAX, stdin);
  printf ("%d\n", strlen_recursif (s,0));
  return 0;
}

int strlen_recursif (char *s,int longueur){
  if (*s == '\0')
    return longueur;
  return strlen_recursif (s + 1,longueur + 1);
}
 

Explication :

La fonction a 2 paramètres. Le 1er c'est la chaîne de caractères et le 2ème c'est la longueur qui, à l'initialisation, vaut zéro.
Nous utililserons le pointeur s qui est l'adresse du 1er élément de la chaîne de caractères. Dans l'appel récursif nous incrémentons le pointeur ainsi que la longueur qui au début vaut 0, donc nous sommes au 2ème élément de la chaîne et longueur 1, et ainsi de suite.
Si le pointeur contient '\0', nous sommes à la fin de la chaîne et nous ne comptons pas le caractère '\0'. La fonction retourne la longueur.
Sinon nous incrémentons le pointeur avec 1 (pour un caractère rencontré) et nous incrémentons aussi la longueur d'une unité.
Création : octobre 2007  © Tous droits réservés 2007 linux-perl-c
Valid HTML 4.01 TransitionalValid CSS