mbtowc - przekształca ciąg wielobajtowy na znak szeroki
Standardowa biblioteka C (
libc,
-lc)
#include <stdlib.h>
int mbtowc(wchar_t *restrict pwc, const char s[restrict .n], size_t n);
The main case for this function is when
s is not NULL and
pwc is
not NULL. In this case, the
mbtowc() function inspects at most
n
bytes of the multibyte string starting at
s, extracts the next complete
multibyte character, converts it to a wide character and stores it at
*pwc. It updates an internal shift state known only to the
mbtowc() function. If
s does not point to a null byte ('\0'), it
returns the number of bytes that were consumed from
s, otherwise it
returns 0.
Jeśli
n bajtów, zaczynając od
s, nie zawiera
pełnego znaku wielobajtowego lub jeśli zawierają
niepoprawny ciąg wielobajtowy,
mbtowc() zwraca
-1.
Może się to zdarzyć, nawet gdy
n >=
MB_CUR_MAX, jeśli wielobajtowy łańcuch zawiera
nadmiarowe ciągi przesunięć.
Inna sytuacja ma miejsce, gdy
s jest różne od NULL, ale
pwc jest równe NULL. Wówczas funkcja
mbtowc()
zachowuje się jak powyżej, z tym wyjątkiem, że nie
przechowuje przetworzonego znaku szerokiego w pamięci.
Trzecia sytuacja występuje, gdy
s jest równe NULL.
Wówczas
pwc i
n są ignorowane. Funkcja
mbtowc() sprowadza stan przesunięty, znany tylko tej funkcji, do
stanu wyjściowego i zwraca wartość
różną od zera, gdy kodowanie zawiera nietrywialne stany
przesunięte, lub zero, jeśli kodowanie jest bezstanowe.
Jeśli
s jest różne od NULL, funkcja
mbtowc()
zwraca liczbę zużytych bajtów, zaczynając od
s; zwraca 0, jeśli
s wskazuje na bajt null lub -1 w
przypadku błędu.
Jeśli
s jest równe NULL, funkcja
mbtowc zwraca
wartość różną od zera, gdy kodowanie
posiada nietrywialne stany przesunięte, a zero, gdy kodowanie jest
bezstanowe.
Informacje o pojęciach używanych w tym rozdziale można
znaleźć w podręczniku
attributes(7).
Interfejs |
Atrybut |
Wartość |
mbtowc() |
Bezpieczeństwo wątkowe |
MT-Unsafe race |
POSIX.1-2001, POSIX.1-2008, C99.
Zachowanie
mbtowc() zależy od kategorii
LC_CTYPE
bieżących ustawień regionalnych.
Funkcja ta nie jest przystosowana do wielowątkowości. Funkcja
mbrtowc(3)zapewnia lepszy interfejs przy tym samym działaniu.
MB_CUR_MAX(3),
mblen(3),
mbrtowc(3),
mbstowcs(3),
wcstombs(3),
wctomb(3)
Autorami polskiego tłumaczenia niniejszej strony podręcznika
są: 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]