wcrtomb(3) | Library Functions Manual | wcrtomb(3) |
wcrtomb - konwertuje szerokie znaki na sekwencje wielobajtowe
Standardowa biblioteka C (libc, -lc)
#include <wchar.h>
size_t wcrtomb(char *restrict s, wchar_t wc, mbstate_t *restrict ps);
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().
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.
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 |
POSIX.1-2001, POSIX.1-2008, C99.
Zachowanie wcrtomb() zależy od kategorii LC_CTYPE bieżących ustawień regionalnych.
Podawanie NULL jako ps nie jest bezpieczne dla wątków.
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 listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.
5 lutego 2023 r. | Linux man-pages 6.03 |