Jestem obecnie przepisywanie (część) Funkcja printf()
dla szkolnego projektu. Ogólnie rzecz biorąc, byli zobowiązani do odtworzenia zachowanie funkcji z kilkoma flagami, konwersje, modyfikatory długości ...Zrozumienie i pisanie wchar_t w C
Jedyne co pozostało do zrobienia i że dostaje mi zablokowane są flagi %C
/%S
(lub %lc
/%ls
).
Do tej pory zdałem sobie sprawę, że wchar_t
to typ, w którym można przechowywać znaki w więcej niż jednym bajcie, w celu akceptowania większej liczby znaków lub symboli i dlatego można je dopasować do niemal każdego języka, niezależnie od ich alfabetu i specjalnego postacie.
Jednak nie byłem w stanie znaleźć żadnych konkretnych informacji o tym, jak wygląda wchar
dla maszyny, to rzeczywista długość (które najwyraźniej różnią się w zależności od kilku czynników, w tym kompilator, system operacyjny ...) lub jak właściwie je pisz.
góry dziękuję
Należy pamiętać, że jesteśmy ograniczeni w funkcjach wolno nam używać. Jedyne dozwolone funkcje są write()
, malloc()
, free()
i exit()
. Musimy być w stanie samodzielnie zakodować każdą wymaganą funkcję. Podsumowując, proszę o informacje o tym, jak interpretować i pisać "ręcznie" każdą literę o kodzie wchar_t
, z możliwie jak najmniejszym kodem, aby móc zrozumieć cały proces i zakodować go. siebie.
Zacznę od zwężenia tego, co 'wchar_t' może oznaczać w twojej sytuacji. W większości systemów * nix oznaczałoby to UTF-32. W Windowsie oznacza to UTF-16. Potem musisz zdecydować, jaki będzie twój wąski 'char'. W większości systemów * nix oznacza to UTF-8. Dobrą wiadomością jest to, że konwersja pomiędzy reprezentacjami Unicode jest bardzo dobrze zdefiniowana. – Mgetz
'sizeof (wchar_t)' powinien nadal działać, prawda? – Kninnug
@Kninnug - Działa i zwraca 4 bajty. – kRYOoX