IAR bug, vagy en vagyok a susu?

Fuzesi Arnold arno at externet.hu
Wed Feb 11 04:57:02 CET 2004


Ez mukodik:
------------
     if(comm_newcmd0){
        if( comm_ibuf0[comm_ibuf0[2]-'@'] ==
w1_crcgen((uchar*)&comm_ibuf0[0],comm_ibuf0[2]-'@') ) {
          if( sscanf(comm_ibuf0,"<BMHP%5f%3u%*c",&temp_f,&temp_c)!=2 ) {
            d_main->tmp=0,d_main->hum=0;
            myprintf(SER1,"SHT scanf error\r\n");
          }
          d_main->tmp=temp_f;
          d_main->hum=temp_c;
        }
        else {
          myprintf(SER1,"SHT CRC error\r\n");
        }
        comm_newcmd0=0;
      }

Ez meg nem:
------------
      if(comm_newcmd0){
        if( comm_ibuf0[comm_ibuf0[2]-'@'] ==
w1_crcgen((uchar*)&comm_ibuf0[0],comm_ibuf0[2]-'@') ) {
          if(
sscanf(comm_ibuf0,"<BMHP%5f%3u%*c",d_main->tmp,d_main->hum)!=2 ) {
            d_main->tmp=0,d_main->hum=0;
            myprintf(SER1,"SHT scanf error\r\n");
          }
        }
        else {
          myprintf(SER1,"SHT CRC error\r\n");
        }
        comm_newcmd0=0;
      }

A scanf bugzik...Az a lenyeges sor.
Ha egy strukturaelemre mutato pointeren keresztul irom a struktura elemet,
akkor a kovetkezo strukturaelembe
is belenyul (masodik variáció).
Ha meg beteszem atmeneti valtozoba(első variácó), és utana toltom be, akkor
oke minden.

Az a gyanum, hogy a scanf körül van vmi galiba...Vagy én nem használom jól a
formátumstringjét, vagy nemtom.
Van valakinek tippje?

Struktura maga:
typedef struct {
  float tmp;
  uchar hum; -------------- a hum-ba ha ir a scanf, akkor a day-be is
belenyul... :(
  uchar day;  --------------
  uchar time;
  uint measured;
  uint average;
  uint predest;
  uint piece;
  uint weight;
 }D_MAIN;

Arnold



More information about the Elektro mailing list