Rechercher
 

Améliorations / Corrections

Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.

Emplacement :

Description des améliorations :

Fonction strpbrk

La fonction strncpy La fonction strrchr


Entête à inclure

#include <string.h>  // <cstring> en C++

Fonction strpbrk

const char * strrchr( const char * string, const char * searchedCharacters );    // C++ (<cstring>)
      char * strrchr(       char * string,       char * searchedCharacters );    // C (<string.h>)

Cette fonction recherche dans une chaîne de caractères la première occurrence d'un caractère parmis une liste de caractères autorisés.

la fonction strpbrk est assez proche de la fonction strchr. La différence réside dans le fait que la fonction strchr recherche la première occurence d'un caractère unique alors que strpbrk recherche la première occurence d'un caractère parmi une liste de caractères à rechercher.

Paramètres

Valeur de retour

Si la fonction trouve un de caractères recherchés dans la chaîne, elle renvoi un pointeur vers le premier caractère de la liste rencontré. Dans le cas contraire, la fonction renvoi un pointeur nul (NULL).

Exemple de code

L'exemple de code suivant vous demande de saisir une chaîne de caractères : placez-y des espaces ou des tabulations. Grâce à la fonction strpbrk, le programme calcule le nombre de mots contenu dans la phrase, ces mots étant séparés par des blancs ou des tabulations.

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
 28 
 29 
 30 
 31 
 32 
 33 
 34 
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main() {

    // On cherche à lire une ligne de texte à partir du clavier.
    char buffer[ 255 ];
    printf( "Veuillez saisir une ligne de texte avec des séparateurs : \n" );
    scanf( "%[^\n]", buffer );
    // Pour supprimer le caractère '\n' du flux pour la prochaine lecture.
    fgetc( stdin );

    // On compte le nombre de séparateur : blancs & tabulations.
    unsigned int separatorCount = 0;
    char * currentString = buffer;
    while ( true ) {
        char * nextSeparator = strpbrk( currentString, " \t" );
        if ( nextSeparator != NULL ) {
            currentString = nextSeparator+1;
            separatorCount ++;
        } else {
            break;
        }
    }

    // Affichage du nombre de mots.
    unsigned int wordCount = separatorCount + 1;
    printf( "La chaîne %s possède %u mot(s).", buffer, wordCount );

    return EXIT_SUCCESS;
}
Exemple d'utilisation de fonction strpbrk

Et voici le résultat produit par cet exemple :

$> gcc -o sample sample.c
$> ./sample
Veuillez saisir une ligne de texte avec des séparateurs : 
Un exemple de code en langage C
La chaîne Un exemple de code en langage C possède 7 mot(s).
$>

Sujets connexes

strcat
strchr
strcpy
strlen
strrchr
strstr


La fonction strncpy La fonction strrchr