Scroll to navigation

WCRTOMB(3) Podręcznik programisty linuksowego 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.

1999-07-25 GNU