memchr(3) szukanie znaku w pamięci

Other Alias

memrchr, rawmemchr

SKŁADNIA

#include <string.h>
void *memchr(const void *s, int c, size_t n);
void *memrchr(const void *s, int c, size_t n);
void *rawmemchr(const void *s, int c);

Wymagane ustawienia makr biblioteki glibc (patrz feature_test_macros(7)):

memrchr(), rawmemchr(): _GNU_SOURCE

OPIS

Funkcja memchr() skanuje pierwsze n bajtów obszaru pamięci wskazywanego przez s w poszukiwaniu pierwszego wystąpienia znaku c. Zarówno c, jak i bajty pamięci wskazywane przez s są interpretowane jako unsigned char.

Funkcja memrchr()jest podobna do funkcji memchr(), z tym wyjątkiem, że poszukuje wstecz od końca n bajtów wskazywanych przez s, zamiast przeszukiwać do przodu od początku.

Funkcja rawmemchr() jest podobna do memchr(): zakłada (to jest: programista jest pewny), że w znak c występuje gdzieś w obszarze pamięci zaczynającym się w miejscu wskazywanym przez s i przeprowadza zoptymalizowane wyszukiwanie znaku c (tj. nie używa licznika do zawężenia obszaru przeszukiwania). Jeśli c nie występuje, to wynik jest nieprzewidywalny. Następujące wywołanie jest szybkim sposobem wyszukania bajtu null kończącego łańcuch znaków:

char *p = rawmemchr(s, '\0');

WARTOŚĆ ZWRACANA

Funkcje memchr() i memrchr() zwracają wskaźnik do pasującego bajtu lub NULL, jeżeli znak nie został znaleziony w podanym obszarze pamięci.

Funkcja rawmemchr() zwraca wskaźnik do pasującego bajtu, jeśli taki zostanie znaleziony. W przeciwnym wypadku wynik funkcji jest nieokreślony.

WERSJE

rawmemchr() się po raz pierwszy pojawiła w wersji 2.1 biblioteki glibc.

memrchr() się po raz pierwszy pojawiła w wersji 2.2 biblioteki glibc.

ATRYBUTY

Wielowątkowość (patrz pthreads(7))

Funkcje memchr(), memrchr() i rawmemchr() są wątkowo bezpieczne.

ZGODNE Z

Funkcja memchr() jest zgodna z SVr4, 4.3BSD, C89, C99, POSIX.1-2001.

Funkcja memrchr() jest rozszerzeniem GNU dostępnym od wersji 2.1.91 biblioteki glibc.

Funkcja rawmemchr() jest rozszerzeniem GNU dostępnym od wersji 2.1 biblioteki glibc.

O STRONIE

Angielska wersja tej strony pochodzi z wydania 3.71 projektu Linux man-pages. Opis projektu, informacje dotyczące zgłaszania błędów, oraz najnowszą wersję oryginału można znaleźć pod adresem http://www.kernel.org/doc/man-pages/.

TŁUMACZENIE

Autorami polskiego tłumaczenia niniejszej strony podręcznika man są: Jarosław Beczek (PTM) <[email protected]>, Andrzej Krzysztofowicz (PTM) <[email protected]>, Robert Luberda <[email protected]> i Michał Kułach <[email protected]>.

Polskie tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na stronie http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją 3.71 oryginału.