[elektro] C sprintf

Skandar Graun sgraun at gmail.com
Fri Dec 14 14:14:54 CET 2012


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]



More information about the Elektro mailing list