NAZWA¶
mbtowc - przekształca ciąg wielobajtowy na znak szeroki
SKŁADNIA¶
#include <stdlib.h>
int mbtowc(wchar_t *pwc, const char *s, size_t n);
OPIS¶
Podstawową dla tej funkcji jest sytuacja, gdy
s jest
różne od NULL i
pwc jest różne od NULL. W
tym przypadku, funkcja
mbtowc() sprawdza co najwyżej
n
bajtów ciągu wielobajtowego, zaczynając od
s,
wydziela następny pełny znak wielobajtowy, przetwarza go na znak
szeroki i umieszcza w
*pwc. Aktualizuje wewnętrzny, znany tylko
funkcji
mbtowc(), stan przesunięty. Jeśli
s nie
wskazuje na bajt null ('\0'), funkcja zwraca liczbę bajtów
s, które zostały zużyte; w pozostałych
przypadkach zwracane jest 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.
WARTOŚĆ ZWRACANA¶
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.
ZGODNE Z¶
C99.
UWAGI¶
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.
ZOBACZ TAKŻE¶
MB_CUR_MAX(3),
mblen(3),
mbrtowc(3),
mbstowcs(3),
wctomb(3),
wcstombs(3)
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ą: Andrzej Krzysztofowicz (PTM) <ankry@mif.pg.gda.pl>, Robert
Luberda <robert@debian.org> i Michał Kułach
<michal.kulach@gmail.com>.
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.