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