Namespaces
Variants

memchr

From cppreference.net
< c ‎ | string ‎ | byte
Défini dans l'en-tête <string.h>
void * memchr ( const void * ptr, int ch, size_t count ) ;
(1)
/*QVoid*/ * memchr ( /*QVoid*/ * ptr, int ch, size_t count ) ;
(2) (depuis C23)
1) Trouve la première occurrence de ( unsigned char ) ch dans les premiers count octets (chacun interprété comme unsigned char ) de l'objet pointé par ptr .
2) Fonction générique de type équivalente à (1) . Soit T un type d'objet non qualifié (incluant void ).
  • Si ptr est de type const T * , le type de retour est const void * .
  • Sinon, si ptr est de type T * , le type de retour est void * .
  • Sinon, le comportement est indéfini.
Si la définition de macro de chacune de ces fonctions génériques est supprimée pour accéder à une fonction réelle (par exemple si ( memchr ) ou un pointeur de fonction est utilisé), la déclaration de fonction réelle (1) devient visible.

Le comportement n'est pas défini si l'accès se produit au-delà de la fin du tableau recherché. Le comportement n'est pas défini si ptr est un pointeur nul.

Cette fonction se comporte comme si elle lisait les octets séquentiellement et s'arrêtait dès qu'un octet correspondant est trouvé : si le tableau pointé par ptr est plus petit que count , mais que la correspondance est trouvée dans le tableau, le comportement est bien défini.

(depuis C11)

Table des matières

Paramètres

ptr - pointeur vers l'objet à examiner
ch - octets à rechercher
count - nombre maximal d'octets à examiner

Valeur de retour

Pointeur vers l'emplacement de l'octet, ou un pointeur nul si aucun octet correspondant n'est trouvé.

Exemple

#include <stdio.h>
#include <string.h>
int main(void)
{
    const char str[] = "ABCDEFG";
    const int chars[] = {'D', 'd'};
    for (size_t i = 0; i < sizeof chars / (sizeof chars[0]); ++i)
    {
        const int c = chars[i];
        const char *ps = memchr(str, c, strlen(str));
        ps ? printf ("character '%c'(%i) found: %s\n", c, c, ps)
           : printf ("character '%c'(%i) not found\n", c, c);
    }
    return 0;
}

Sortie possible :

character 'D'(68) found: DEFG
character 'd'(100) not found

Références

  • Norme C23 (ISO/CEI 9899:2024) :
  • 7.24.5.1 La fonction memchr (p: TBD)
  • Norme C17 (ISO/CEI 9899:2018) :
  • 7.24.5.1 La fonction memchr (p : 267-268)
  • Norme C11 (ISO/IEC 9899:2011):
  • 7.24.5.1 La fonction memchr (p: 367)
  • Norme C99 (ISO/IEC 9899:1999) :
  • 7.21.5.1 La fonction memchr (p: 330)
  • Norme C89/C90 (ISO/IEC 9899:1990) :
  • 4.11.5.1 La fonction memchr

Voir aussi

trouve la première occurrence d'un caractère
(fonction)