Scroll to navigation

WCRTOMB(3) Podręcznik programisty Linuksa WCRTOMB(3)

NAZWA

wcrtomb - konwertuje szerokie znaki na sekwencje wielobajtowe

SKŁADNIA

#include <wchar.h>
size_t wcrtomb(char *s, wchar_t wc, mbstate_t *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().

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

ZGODNE Z

POSIX.1-2001, POSIX.1-2008, 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)

O STRONIE

Angielska wersja tej strony pochodzi z wydania 5.07 projektu Linux man-pages. Opis projektu, informacje dotyczące zgłaszania błędów oraz najnowszą wersję oryginału można znaleźć pod adresem https://www.kernel.org/doc/man-pages/.

TŁUMACZENIE

Autorami polskiego tłumaczenia niniejszej strony podręcznika są: 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 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

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

6 marca 2019 r. GNU