table of contents
WCRTOMB(3) | Podręcznik programisty Linuksa | WCRTOMB(3) |
NAZWA¶
wcrtomb - konwertuje szerokie znaki na sekwencje wielobajtoweSKŁ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 4.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 man są: Przemek Borys (PTM) <pborys@dione.ids.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ą 4.07 oryginału.
2015-08-08 | GNU |