Participer au site avec un Tip
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 memccpy (C2x)

L'entête string.h La fonction memchr


Entête à inclure

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

Fonction memccpy (C2x)

void * memccpy( void * restrict destination, const void * restrict source, int ch, size_t maxSize );

Cette fonction permet de copier un bloc de mémoire spécifié par le paramètre source dans un nouvel emplacement désigné par le paramètre destination. La copie s'arrête soit après la première occurrence du caractère ch, soit à la taille maximale spécifiée par le paramètre maxSize.

Il est bien entendu qu'il est de votre responsabilité d'allouer suffisamment de mémoire pour le bloc de destination afin qu'il puisse contenir toutes les données.

En cas de chevauchement des deux blocs de mémoire (source et destination) le comportement de la fonction memccpy n'est pas garanti. Dans ce cas, veuillez préférer l'utilisation de la fonction memmove.

Paramètres

Valeur de retour

Si aucune occurrence du caractère ch n'est trouvé, la fonction renverra un pointeur nul. Dans le cas contraire, la fonction retournera un pointeur situé juste après le caractère ch dans la chaîne finale.

Exemple de code

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main() {

    const char * text = "Ceci est ma première phrase. Et ceci est ma seconde";
    size_t length = strlen( text );

    // On essaye de trouver la première phrase dans le texte.
    char firstSentence[ length ];
    char * res = memccpy( firstSentence, text, '.', length );

    // On affiche le resultat.
    if ( res != NULL ) {
        printf( "Une phrase entière a été trouvée.\n" );
        printf( "\t%s\n", firstSentence );
    } else {
        printf( "Aucune phrase entière trouvée.\n" );
    }

    return EXIT_SUCCESS;
}
Exemple d'utilisation de la fonction memccpy

Et voici le résultat produit par cet exemple de code.

$> gcc -o sample sample.c
$> ./sample
Une phrase entière a été trouvée.
        Ceci est ma première phrase.
$> 

Sujets connexes

malloc
memcmp
memcpy
memmove
memset


L'entête string.h La fonction memchr