wcrtomb(3)

NAZWA
wcrtomb - konwertuje szerokie znaki na sekwencje wielobajtowe

BIBLIOTEKA
Standardowa biblioteka C (libc, -lc)

SKŁADNIA
#include <wchar.h>

size_t wcrtomb(char *restrict s, wchar_t wc, mbstate_t *restrict ps);

OPIS
Podstawowym zastosowaniem tej funkcji jest przypadek, gdy s nie jest NULL i wc nie jest szerokim znakiem null (L'\0'). Wtedy funkcja wcrtomb() konwertuje szeroki znak wc na jego wielobajtową reprezentację i zachowuje ją na początku tablicy znakowej, wskazywanej przez s. Aktualizuje stan przesunięcia *ps i zwraca długość reprezentacji wielobajtowej, tj. liczbę bitów zapisanych do s.

Innym przypadkiem jest sytuacja, gdy s również nie jest NULL, lecz wc jest szerokim znakiem null (L'\0'). Wtedy funkcja wcrtomb() zachowuje w s sekwencję przesunięcia wymaganą do przeniesienia *ps z powrotem do stanu początkowego, a za tą sekwencją doklejony będzie bajt '\0'. Aktualizuje stan przesunięcia *ps (tj. przenosi go do stanu początkowego) i zwraca długość sekwencji przesunięcia plus jeden, tj. liczbę bajtów zapisanych do s.

Trzecim przypadek to s równe NULL. Wtedy wc jest ignorowane, a funkcja zwraca

    wcrtomb(buf, L'\0', ps)

gdzie buf jest wewnętrznym anonimowym buforem.

We wszystkich powyższych przypadkach, jeśli ps jest NULL, to w jego miejscu używany jest anonimowy stan, znany tylko funkcji wcrtomb().

Do s zostanie zapisanych co najwyżej MB_CUR_MAX bajtów. Zadaniem programisty jest upewnienie się, że w s jest wystarczająco dużo miejsca do przechowania sekwencji wielobajtowej.

WARTOŚĆ ZWRACANA
Funkcja wcrtomb() zwraca liczbę bajtów, które zostały (lub zostałyby) zapisane do tablicy bajtowej s. Jeśli wc nie może być reprezentowane w sekwencji wielobajtowej (według bieżących ustawień regionalnych), zwracane jest (size_t) -1 i errno jest ustawiane na EILSEQ.

ATRYBUTY
Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku attributes(7).
Interfejs | Atrybut | Wartość
wcrtomb() | Bezpieczeństwo wątkowe | MT-Unsafe race:wcrtomb/!ps

STANDARDY
C11, POSIX.1-2008.

HISTORIA
POSIX.1-2001, C99.

UWAGI
Zachowanie wcrtomb() zależy od kategorii LC_CTYPE bieżących ustawień regionalnych.

Podawanie NULL jako ps nie jest bezpieczne dla wątków.

ZOBACZ TAKŻE
mbsinit(3), wcsrtombs(3)

TŁUMACZENIE
Tłumaczenie niniejszej strony podręcznika: Przemek Borys <pborys@dione.ids.pl>, Robert Luberda <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>

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 (https://www.gnu.org/licenses/gpl-3.0.html) lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.