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¶
Uwaga! To tłumaczenie może być nieaktualne!
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 ona wewnętrzny, znany tylko funkcji mbtowc, stan
przesunięty. Jeśli
s nie wskazuje na bajt '\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, poczynając od
s nie zawiera
pełnego znaku wielobajtowego, lub jeśli zawierają one
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 posiada
nietrywialne stany przesunięte, a zero jeśli kodowanie jest
bezstanowe.
WARTOŚĆ ZWRACANA¶
Jeśli
s jest różne od NULL, funkcja
mbtowc zwraca
liczbę zużytych bajtów, poczynając od
s, a 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¶
ISO/ANSI C, UNIX98
ZOBACZ TAKŻE¶
mbrtowc(3),
mbstowcs(3),
MB_CUR_MAX(3)
UWAGI¶
Zachowanie
mbtowc zależy od kategorii LC_CTYPE bieżącego
locale.
Funkcja ta nie jest przystosowana do wielowątkowości. Funkcja
mbrtowc zapewnia lepszy interfejs przy tym samym działaniu.
Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu
Tłumaczenia Manuali i
może nie być aktualne. W razie
zauważenia różnic między powyższym opisem a
rzeczywistym zachowaniem opisywanego programu lub funkcji, prosimy o
zapoznanie się z oryginalną (angielską) wersją strony
podręcznika za pomocą polecenia:
- man --locale=C 3 mbtowc
Prosimy o pomoc w aktualizacji stron man - więcej informacji można
znaleźć pod adresem
http://sourceforge.net/projects/manpages-pl/.