WCRTOMB(3) Podręcznik programisty linuksowego WCRTOMB(3)
wcrtomb - konwertuje szerokie znaki na sekwencje wielobajtowe
#include <wchar.h>
size_t wcrtomb(char *s, wchar_t wc, mbstate_t *ps);
Podstawowym zastosowaniem tej funkcji jest to, gdy s nie jest NULL i wc
nie jest L'\0'. W tym przypadku, funkcja ta 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. ilość bitów zapisanych
do s.
Innym przypadkiem jest sytuacja, gdy s również nie jest NULL, lecz wc
jest L'\0'. W tym przypadku, funkcja ta zachowuje w s sekwencję prze-
sunięcia, wymaganą do przeniesienia *ps z powrotem do stanu
początkowego. Za 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 przypadkiem jest gdy s jest NULL. W tym przypadku, 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 wskaźnikiem NULL, 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 obecnych locale), zwracane jest
(size_t)(-1) i errno jest ustawiane na EILSEQ.
ISO/ANSI C, UNIX98
wcsrtombs(3)
Zachowanie tej funkcji zależy od kategorii LC_CTYPE aktualnych ustawień
locale.
Podawanie NULL jako ps nie jest bezpieczne w trybie wielowątkowym.
GNU 1999-07-25 WCRTOMB(3)