memcmp - porównuje obszary pamięci
Standardowa biblioteka C (
libc,
-lc)
#include <string.h>
int memcmp(const void s1[.n], const void s2[.n], size_t n);
Funkcja
memcmp() porównuje pierwsze
n bajtów
(każdy interpretowany jako
unsigned char) obszaru pamięci
s1 z obszarem
s2.
Funkcja
memcmp() zwraca liczbę całkowitą
mniejszą od zera, równą zeru lub większą od
zera, jeżeli
s1 jest odpowiednio mniejszy niż,
równy lub większy niż pierwsze
n bajtów
s2.
Jeśli wartość zwracana jest niezerowa, dodatni lub ujemny
znak tej wartości jest określany na podstawie znaku
różnicy pomiędzy pierwszą parę
bajtów (interpretowanych jako
unsigned char), które
się różnią pomiędzy
s1 i
s2.
Jeśli
n jest zerem, zwracaną wartością jest
zero.
Informacje o pojęciach używanych w tym rozdziale można
znaleźć w podręczniku
attributes(7).
Interfejs |
Atrybut |
Wartość |
memcmp() |
Bezpieczeństwo wątkowe |
MT-Safe |
POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.
Nie należy używać
memcmp() do porównywania
danych krytycznych ze względu na bezpieczeństwo, takich jak
sekrety kryptograficzne, ponieważ wymagany czas procesora zależy
od liczby równający się sobie bajtów. W zamian,
wymagana jest funkcja wykonująca porównanie w stałych
czasie. Niektóre systemy operacyjne udostępniają
taką funkcję (np. w systemie NetBSD jest to
consttime_memequal()), lecz nie określono jej w specyfikacji
POSIX. Pod Linuksem może być konieczne samodzielne
zaimplementowanie takiej funkcji.
bstring(3),
strcasecmp(3),
strcmp(3),
strcoll(3),
strncasecmp(3),
strncmp(3),
wmemcmp(3)
Autorami polskiego tłumaczenia niniejszej strony podręcznika
są: Adam Byrtek <
[email protected]>, Andrzej Krzysztofowicz
<
[email protected]>, Robert Luberda <
[email protected]> i
Michał Kułach <
[email protected]>
Niniejsze tłumaczenie jest wolną dokumentacją.
Bliższe informacje o warunkach licencji można uzyskać
zapoznając się z
GNU
General Public License w wersji 3 lub nowszej. Nie przyjmuje się
ŻADNEJ ODPOWIEDZIALNOŚCI.
Błędy w tłumaczeniu strony podręcznika prosimy
zgłaszać na adres listy dyskusyjnej
[email protected]