#include <string.h> // <cstring> en C++
void * memchr( const void * memoryBlock, int searchedChar, size_t size );
Recherche la première occurence d'une valeur typée int
, mais interprétée en tant que char
, dans un bloc de mémoire.
Comme on traite un bloc de mémoire et non pas une chaîne de caractères AZT (à zéro terminal), nous devons aussi spécifier à la fonction la taille
du bloc de mémoire dans lequel réaliser la recherche.
Si la fonction a trouvé le caractère recherché, la fonction renvoie un pointeur vers sa première occurence.
Si ce n'est pas le cas, la fonction renvoie la valeur NULL
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char data[] = { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 }; const unsigned int size = 10; // On recherche une valeur inhéxistante : void * found = memchr( data, 57, size ); printf( "57 is %s\n", ( found != NULL ? "found" : "not found" ) ); // On recherche une valeur existante : found = memchr( data, 50, size ); printf( "50 is %s\n", ( found != NULL ? "found" : "not found" ) ); if ( found != NULL ) { printf( "La valeur à la position calculée est %d\n", *((char *) found) ); } return EXIT_SUCCESS; } |
Et voici les résultats produits par cet exemple :
$> gcc -o sample sample.c $> ./sample 57 is not found 50 is found La valeur à la position calculée est 50 $>
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 :