[elektro] C sprintf
SZIGETI Szabolcs
szigiszabolcs at gmail.com
Fri Dec 14 14:21:58 CET 2012
Hali!
Jesszus, ez valami nagy bűvölet. Ezekkel lehet nagyot szopni. gyanítom a
DWORD_VAL valami elfajzott struct/union lehet, amit ráfektetve a dwordre
egyeben valami char tömbként is el lehet érni és kiberhelni az egyes
részeket. Ez milyen környezet?
Én simán kimaszkolnám az alsó meg a felső intet: (int)(address & 0xffff)
megadja a felsőt, (int)(address>>16)&0xffff) meg az alsót. Esetleg unsigned
int.Vagy valmi hasonló.
Szabolcs
2012. december 14. 14:14 Skandar Graun írta, <sgraun at gmail.com>:
> Ezt tettem, köszi.
> Bár nekem egy DWORD_VAL függvény byte-ra szedte szét.
> Ez a sor:
>
> sprintf(uart_x, "%2x", (((DWORD_VAL) address).v[1]));
>
> Hogy lehet paraméterezni, hogy int-re szedjen? A .v kitételt nem
> tudtam kihámozni.
>
> SZIGETI Szabolcs <szigiszabolcs at gmail.com> írta (2012. december 14.
> 13:57):
> > Hali!
> >
> > Az x formatum az unsigned int-et kíván (legalább is szabvány C-ben). Ez a
> > DWORD-el nem nagyon fog összejönni, akármekkora mezőszélességet is írsz
> > oda, lévén az az adat típusát nem változtatja meg, csak azt, hogy mekkora
> > helyere írja ki. De legalább a fordító jó fej, mert felismeri, hogy a
> > printf nem mindennapi függvény, és szól érte (régebbi fordítók nem
> > csinálták ezt, ott sokkal nagyobbat lehetett szívni ilyenkor). Az, meg
> hogy
> > nem működik, az elég természetes ilyen esetben, bár szintaktikailag
> helyes
> > (ezért csak warning), de rossz paramétert kap a printf.
> >
> > Például szedd szét két intre és két egymás meletti %x%x-szel írasd ki.
> >
> > Szabolcs
> >
> >
> >
> > 2012. december 14. 13:33 Skandar Graun írta, <sgraun at gmail.com>:
> >
> >> Sziasztok!
> >>
> >> A " sprintf(uart_x, "%8x - ", address);"
> >> sorra folyamatosan a:" format '%8x' expects type 'unsigned int', but
> >> argument 3 has type 'DWORD'
> >> hibaüzenetet adja.
> >> Az address egy függvény bemenő adata:
> >>
> >> void DumpSerialEEP(int volume, DWORD address)
> >>
> >> A formázást egész 16-ig módosítgattam... nem sikerült kivédeni a
> >> hibaüzenetet.
> >> Hiába warning, az utasítást nem hajtja végre...
> >>
> >> Lehet, hogy az sprintf csak int-re műxik? Bár ezt sehol nem láttam
> leírva.
> >>
> >> -----------------------------------------
> >> elektro[-flame|-etc]
> >>
> > -----------------------------------------
> > elektro[-flame|-etc]
>
> -----------------------------------------
> elektro[-flame|-etc]
>
More information about the Elektro
mailing list