streda, 15. decembra 2010

scanf a %i

Na zaujímavý problém sme narazili v robote a zistili sme, že čítať pozorne "help" je niekedy užitočné :)

Ten náš problém bol s funkciou scanf a parametrom %i pre číselný vstup. Koľko z Vás dokáže povedať bez nazretia do helpu, že ktorý z týchto príkladov nebude fungovať?

int i;
sscanf( "987600", "%i", &i);
sscanf( "087600", "%i", &i);
sscanf( "007600", "%i", &i);

5 komentárov:

  1. Tipujem ze scanf( "%i", "087600", &i); nebude fungovat... problem s osmickovym zapisom cisla?

    OdpovedaťOdstrániť
  2. (Vcera som nahodou cital http://stackoverflow.com/questions/1995113/strangest-language-feature/2003942#2003942, preto to tipujem na rovnaky problem)

    OdpovedaťOdstrániť
  3. Ze to vyriesi prave javista .... :)

    OdpovedaťOdstrániť
  4. Čisto formálne nebude fungovať ani jeden -- keďže scanf() číta zo stdin a nie zo svojho argumentu [a sscanf() má parametre v opačnom poradí] :-)

    Ale inak áno... %d(ecimal) to istí :-)

    OdpovedaťOdstrániť
  5. ach jaj - tak to dopada ked nieco rychlo napisem a nepremyslam nad tym :) idem opravit :)

    OdpovedaťOdstrániť