Scanf szivat
Vajk Fekete
Vajk.Fekete at oracle.com
Wed Feb 11 09:44:58 CET 2004
hi Arnold,
Soha nem programoztam meg uC-n c-ben, de gondoltam kiprobalom a C
tudasom megvan-e meg nyomokban.
Szoval gcc, linux, x86.
1. a doksi szerint az x az hexa szamot olvas a stringbol, de te tudod.
2. az x az int-et tesz a kimenetre. mivel neked a tombod char (byte),
mindig egyel tobb karaktert ir bele, mint hiszed. (persze nemtom mit
hiszel :) az en gepem bytesorrendje meg pont olyan hogy mivel felulrol
lefele tolti a tombot, a beirt 2byteos int nagyhelyierteku byteja (ami
mindig 0) felulirja az elozoleg beirt erteket. ha az obuf[20]-ba irnal,
segfaultot is kapnal jol.
3. ha atirom a tombot int[20] ra, egybol jol is megy. mondjuk vicces,
hogy a 12-t elolvassa hexa 12-nek, beirja a 18-at, aztan kiiraskor
hexaba alakitja, es kiirja hogy 12.
meg kellene keresni, hogy a scanf format stringjebe mit kell irni, hogy
decimalis szamot olvasson, es utanna 8bites egeszet irjon.
a standard c-ben ugye csak short int vagy int van, be kellene olvasni
egy short int-be mondjuk a %hx-el, es utanna csak a megfelelo byteot
attenni a tombbe. remelem a te forditod (libc-d) tud direkt is unsigned
chart kezelni a scanf-ban, hamar uC-re valo.
bocsi, ha csak feltartottalak.
vajk
Fuzesi Arnold wrote:
>Én vagyok a hülye, vagy én vagyok a hülye? :)
>Biztos, mert az IAR is, meg a BorlandC is ugyan azt produkálja....
>Jó nagy hülyeséget.
>
>Mi a hiba, valaki meg tudja mondani?
>Mert én már...foggggalmam nincs. Valszeg valami hiányosság részemről....
>Scanf a gyengém. :)
>
>#include <stdio.h>
>#include <conio.h>
>#include <string.h>
>
>main()
>{
>
> unsigned char loop0, i2c_obuf[20]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
> char mstring1[]="Date: 2012,13,14";
> char mstring2[]="Time: 15,16,17";
>
> clrscr();
> sscanf( mstring1,"Date:
>20%x,%x,%x",&i2c_obuf[9],&i2c_obuf[8],&i2c_obuf[6]);
> sscanf( mstring2,"Time:
>%x,%x,%x",&i2c_obuf[5],&i2c_obuf[4],&i2c_obuf[3]);
>
> for(loop0=0;loop0<20;loop0++)
> printf("%2x,",i2c_obuf[loop0]);
>
>}
>
>
>
More information about the Elektro
mailing list