[AvrGCC] Jak zapisac znak specjalny

Jan 27, 2009 7 Replies

Witam. jak zapisac w tablicy znakow znak specjalny np. char str[]="Temperatuta 15stC" zastêpuj±c znaki 'st' znakiem stopnia (koleczko) ? W CodeVisionAVR nie mialem problemu - stosowalem zapis np "\x34\x37\xdf" i mialem wstawione znaki. Avrgcc niestety wypisuje mi jakies krzaki.



roxy pisze:

Nie jestem guru od AvrGCC, ale w języku C od zawsze istniał zapis _ósemkowy_ \000, na przykład Twoje \xdf będzie wyglądać \337.

Pozdrowienia, MKi

roxy pisze:

zamiast "\x34\x37\xdf" może spróbuj "\x34""\x37""\xdf"

Pozdr. MD

Użytkownik Marcin napisał:

W WinAVR (a dokładnie w PN) normalnie wstawiam znak specjalny przez lewy Alt + (kod ASCII wystukany na klawiaturze numerycznej). W kodzie źródłowym pojawia się jakiś śmieszny znaczek, ale w wynikowym jest to co trzeba.

Pozdrawiam Grzegorz

Użytkownik roxy napisał:

Powinno działać tak jak piszesz. Jest jedno ale, jeśli używasz znaku specjalnego w hex bezpośrednio przed literą z zakresu A-F to tę literę też musisz zapisać jako kod np. w Twoim przypadku "Temperatura

15\xA7\x43". Druga rzecz (tego akurat nie jestem na 100% pewien) być może trzeba też używać dużych liter w kodach hex.

pozdrawiam

Piotrek

max441 pisze:

Nie trzeba aż tak cudować, wystarczy zakończyć ciąg znaków cudzysłowem i już można rozpocząć kolejny, np: printf ("Temperatura 15\xA7" "C");

Wielkość liter w kodach hex jest bez znaczenia.

U¿ytkownik "Adam Dybkowski" snipped-for-privacy@45wp.pl napisa³ w wiadomo¶ci news:glo15f$241$ snipped-for-privacy@news.wp.pl...

Dziekuje Panu Adamowi za pomoc.Wlasnie taki ("Temperatura 15\xdf" "C"); zapis gwarantuje poprawne wyswietlenie znaku.

roxy pisze:

BTW: Dla lepszej przejrzystości kodu warto od razu zdefiniować np.: #define DEG_CHAR "\xDF" a może i dodatkowo: #define DEG_CENT DEG_CHAR "C" po czym używać w programie w ten sposób: printf ("Temperatura %d" DEG_CENT, temp);

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required