Výsledky 1 až 4 z 4

Téma: [C] printf, sprintf a kontrola argumentu NULL pro %s

  1. #1

    Standardní [C] printf, sprintf a kontrola argumentu NULL pro %s

    Jesi je tu nakej expert na Cecko...

    Rad bych vedel, jesi fce printf, sprintf a pod. kontrolujou kdyz jim predam NULL misto pointeru na retezec. Tedy napr. printf("neco: %s",p_string);
    Co se stane (ma se stat) pokud je p_string=NULL?

    V mem pripade to vypise na obrazovku (null) . To je OK, ale sprintf mi crashne...

    Gigabyte GA-P67-DS3-B3, Core i7-2600K@4,5GHz, 2xKingston 2GB/1866MHz/CL11, Leadtek 7900GT-256MB DDR3 + Accelero S1, SB-Audigy + YMF724 + DreamBlaster combo, tuner FlyDVB duo, SSD Samsung 840 Pro 128GB + WD1003FBYX RE4 1TB, Seasonic S12II-430, 21" NEC 2190UXp, DVD-RW NEC 4550A->4551A mod, CD-RW Teac 524E, ZIP100, FDD, Canon PowerShot A70, A95+hacked firmware, EOS 350D+CHDK, Pentax K-30, Galaxy S3+CM13, HP ipaq 214, HP 200LX.
    2nd PC: Gigabyte GA-P31-DS3L with custom BIOS, Core2 Duo E8600@4,0GHz, 2xKingston 2GB/1066MHz/CL5
    3rd PC: Abit BX133-Raid, Tualatin 1300@1733/133/1,65V, 2x256MB. WEB: http://rayer.g6.cz

  2. #2

    Standardní Re: [C] printf, sprintf a kontrola argumentu NULL pro %s

    Citace Původně odeslal RayeR
    Jesi je tu nakej expert na Cecko...

    Rad bych vedel, jesi fce printf, sprintf a pod. kontrolujou kdyz jim predam NULL misto pointeru na retezec. Tedy napr. printf("neco: %s",p_string);
    Co se stane (ma se stat) pokud je p_string=NULL?

    V mem pripade to vypise na obrazovku (null) . To je OK, ale sprintf mi crashne...
    Jo, je to presne jak rikas. sprintf, strdup apod. hodi SIGSEGV, printf a fprint by mely vypsat neco jako (null), ale rozhodne bych to nebral jako pravidlo. Vzdycky plati, ze je to lepsi osetrit.
    In a world without fences and walls, who needs Gates and Windows? | Nesnáším wide monitory.
    Workstation: Xeon E3-1275v5 :: Silentmaxx TwinBlock fanless :: Fujitsu D3417-B :: 32 GB ECC DDR4 :: Radeon Pro WX 2100 fanless :: Dell UP2715K :: Gentoo
    Server: Xeon E3-1245v6 :: Supermicro X11SSH-F :: 32 GB ECC DDR4 :: Aquantia 5GBase-T :: 36 TB storage :: Gentoo Hardened

  3. #3

    Standardní

    Mmmm, kamos mi to ted rikal taky, takze tam dam raci nakou inicializaci. Nejlepsi je, ze tuhle chybu mam v tom programu snad 2 roky a teprv ted mi to (na jinym kompu) spadlo

    memset(&vesa_moreinfo,0,sizeof(vesa_moreinfo));

    -----------------------

    sprintf(help_messages[i],"%s",vesa_moreinfo.p_oemvendorname); i++;
    sprintf(help_messages[i],"%s",vesa_moreinfo.p_oemproductname); i++;
    sprintf(help_messages[i],"%s",vesa_moreinfo.p_oemproductrev); i++;

    sem si blahove myslel, ze to tak bude stacit...

    Gigabyte GA-P67-DS3-B3, Core i7-2600K@4,5GHz, 2xKingston 2GB/1866MHz/CL11, Leadtek 7900GT-256MB DDR3 + Accelero S1, SB-Audigy + YMF724 + DreamBlaster combo, tuner FlyDVB duo, SSD Samsung 840 Pro 128GB + WD1003FBYX RE4 1TB, Seasonic S12II-430, 21" NEC 2190UXp, DVD-RW NEC 4550A->4551A mod, CD-RW Teac 524E, ZIP100, FDD, Canon PowerShot A70, A95+hacked firmware, EOS 350D+CHDK, Pentax K-30, Galaxy S3+CM13, HP ipaq 214, HP 200LX.
    2nd PC: Gigabyte GA-P31-DS3L with custom BIOS, Core2 Duo E8600@4,0GHz, 2xKingston 2GB/1066MHz/CL5
    3rd PC: Abit BX133-Raid, Tualatin 1300@1733/133/1,65V, 2x256MB. WEB: http://rayer.g6.cz

  4. #4

    Standardní

    No to je legrace, jen sem si to zkusil na malym programku a tady to funguje - vypisuje (null) , to sem z toho jelen. Ale tu inicializaci sem tam raci dal. Asi kdyz je ta promena v jinym modulu (sice jako globalni) tak to pak uz blbne, nebo fak nevim...

    Kód:
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    
    char buffer&#91;20&#93;;
    struct &#123;
      int a,b;
      long c,d;
      char *p_string;
    &#125; s;
    
    int main&#40;&#41;
    &#123;
      memset&#40;&s,0,sizeof&#40;s&#41;&#41;;
      sprintf&#40;buffer,"blabla=%s",s.p_string&#41;;
      printf&#40;"buffer&#58; %s\n",buffer&#41;;
      return&#40;0&#41;;
    &#125;
    Tady je exac:
    http://www.volny.cz/xfer/4all/pokus.exe

    Gigabyte GA-P67-DS3-B3, Core i7-2600K@4,5GHz, 2xKingston 2GB/1866MHz/CL11, Leadtek 7900GT-256MB DDR3 + Accelero S1, SB-Audigy + YMF724 + DreamBlaster combo, tuner FlyDVB duo, SSD Samsung 840 Pro 128GB + WD1003FBYX RE4 1TB, Seasonic S12II-430, 21" NEC 2190UXp, DVD-RW NEC 4550A->4551A mod, CD-RW Teac 524E, ZIP100, FDD, Canon PowerShot A70, A95+hacked firmware, EOS 350D+CHDK, Pentax K-30, Galaxy S3+CM13, HP ipaq 214, HP 200LX.
    2nd PC: Gigabyte GA-P31-DS3L with custom BIOS, Core2 Duo E8600@4,0GHz, 2xKingston 2GB/1066MHz/CL5
    3rd PC: Abit BX133-Raid, Tualatin 1300@1733/133/1,65V, 2x256MB. WEB: http://rayer.g6.cz

Informace o tématu

Users Browsing this Thread

Toto téma si právě prohlíží 1 uživatelů. (0 registrovaných a 1 anonymních)

Pravidla přispívání

  • Nemůžete zakládat nová témata
  • Nemůžete zasílat odpovědi
  • Nemůžete přikládat přílohy
  • Nemůžete upravovat své příspěvky
  •