wcrtomb

Autres langues

Langue: pl

Autres versions - même langue

Version: 1999-07-25 (openSuse - 09/10/07)

Section: 3 (Bibliothèques de fonctions)

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.