Namespaces
Variants

memchr

From cppreference.net
< c ‎ | string ‎ | byte
Definiert in Header <string.h>
void * memchr ( const void * ptr, int ch, size_t count ) ;
(1)
/*QVoid*/ * memchr ( /*QVoid*/ * ptr, int ch, size_t count ) ;
(2) (seit C23)
1) Findet das erste Vorkommen von ( unsigned char ) ch in den ersten count Bytes (jedes interpretiert als unsigned char ) des Objekts, auf das ptr zeigt.
2) Typgenerische Funktionsäquivalent zu (1) . Sei T ein unqualifizierter Objekttyp (einschließlich void ).
  • Wenn ptr vom Typ const T * ist, dann ist der Rückgabetyp const void * .
  • Andernfalls, wenn ptr vom Typ T * ist, dann ist der Rückgabetyp void * .
  • Andernfalls ist das Verhalten undefiniert.
Falls eine Makrodefinition jeder dieser generischen Funktionen unterdrückt wird, um auf eine tatsächliche Funktion zuzugreifen (z.B. wenn ( memchr ) oder ein Funktionszeiger verwendet wird), wird die tatsächliche Funktionsdeklaration (1) sichtbar.

Das Verhalten ist undefiniert, wenn der Zugriff über das Ende des durchsuchten Arrays hinaus erfolgt. Das Verhalten ist undefiniert, wenn ptr ein null pointer ist.

Diese Funktion verhält sich so, als ob sie die Bytes sequenziell liest und anhält, sobald ein passendes Byte gefunden wird: Wenn das Array, auf das ptr zeigt, kleiner als count ist, aber die Übereinstimmung innerhalb des Arrays gefunden wird, ist das Verhalten wohldefiniert.

(since C11)

Inhaltsverzeichnis

Parameter

ptr - Zeiger auf das zu untersuchende Objekt
ch - zu durchsuchende Bytes
count - maximale Anzahl zu untersuchender Bytes

Rückgabewert

Zeiger auf die Position des Bytes oder ein Nullzeiger, falls kein solches Byte gefunden wird.

Beispiel

#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;
}

Mögliche Ausgabe:

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

Referenzen

  • C23-Standard (ISO/IEC 9899:2024):
  • 7.24.5.1 Die memchr-Funktion (S: TBD)
  • C17-Standard (ISO/IEC 9899:2018):
  • 7.24.5.1 Die memchr-Funktion (S: 267-268)
  • C11-Standard (ISO/IEC 9899:2011):
  • 7.24.5.1 Die memchr-Funktion (S: 367)
  • C99-Standard (ISO/IEC 9899:1999):
  • 7.21.5.1 Die memchr-Funktion (S. 330)
  • C89/C90 Standard (ISO/IEC 9899:1990):
  • 4.11.5.1 Die memchr-Funktion

Siehe auch

findet das erste Vorkommen eines Zeichens
(Funktion)