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 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ę przesunię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.

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 obecnych locale), zwracane jest (size_t)(-1) i errno jest ustawiane na EILSEQ.

ZGODNE Z
ISO/ANSI C, UNIX98

ZOBACZ TAKŻE
wcsrtombs(3)

UWAGI
Zachowanie tej funkcji zależy od kategorii LC_CTYPE aktualnych ustawień locale.

Podawanie NULL jako ps nie jest bezpieczne w trybie wielowątkowym.