Re: Mikro C PIC - string - problém

Martin Persich persich na transcon.cz
Úterý Leden 14 10:35:04 CET 2014


Pokud používáte standardní funkce "str...()", tak si bohužel délku bufferů musíte v programu hlídat sám. A hodně důsledně! Stačí chvilka nepozornosti a i po několika letech se objevují v programu chyby... To je bohužel jeden z velkých nedostatků (a zárověň výhod .-) ) jazykä "C".
Martin

  ----- Original Message ----- 
  From: Jan Půhoný 
  To: HW-news 
  Sent: Tuesday, January 14, 2014 10:25 AM
  Subject: Re: Mikro C PIC - string - problém


  Díky moc - bylo to tou špatnou deklarací v druhém souboru, proto mi to rozhazovalo displej a občas se to i kouslo.


  Teď se to chová korektně.


  Je tedy potřeba hlídat, aby délka toho bufferu byla vždy 16+1 znaků? Není na to nějaká funkce která by to zajistila?


  Ještě jednou díky všem, nemohl jsem na to dlouho přijít.



  Honza Půhoný




  S pozdravem Ing. Jan Půhoný

  www.puhy.cz
  puhy na puhy.cz

  Navštivte nás na Facebooku:
  http://www.facebook.com/puhy.cz


  Následujte nás na Twitteru:
  https://twitter.com/puhycz

  Náš kanál na YouTube:
  http://www.youtube.com/user/puhyeu


  Připojení k internetu a VoIP telefonování
  http://www.puhy.net



  Dne 14. ledna 2014 10:01 Martin Persich <persich na transcon.cz> napsal(a):

    V druhém souboru by měla být jen deklarace:
    extern unsigned char prvni_r[];
    extern unsigned char druhy_r[];

    Počet prvků (délku bufferu) si musí program v "C" bohužel hlídat sám, není problém téměř cokoliv, kdekoliv přepsat mimo tento buffer ... :-( 
    Jinak ten uvedený zápis jednotlivých prvků do bufferu v druhém souboru je dle mého v pořádku a v rámci možností (tj. jazyka "C") korektní.

    Martin. persich na transcon.cz

      ----- Original Message ----- 
      From: Jan Půhoný 
      To: HW-news 
      Sent: Tuesday, January 14, 2014 9:37 AM
      Subject: Re: Mikro C PIC - string - problém


      Díky všem za odpovědi. 


      Zdá se, te strcpy funguje stejně jak s & tak bez &. Ještě to ale trochu zlobí, když do prvni_r a druhy_r šahám přes takovýto zápis


      extern unsigned char prvni_r[17]="                ";
      extern unsigned char druhy_r[17]="                ";


      prvni_r[8]=jednotky;
      prvni_r[9]=desitky;
      prvni_r[10]=':';


      z jiného c souboru stejného projektu.


      V hlavním c souboru s main void mám definici takto:


      unsigned char prvni_r[17]="                ";
      unsigned char druhy_r[17]="                ";


      Jak korektně přistupovat ke stejným proměnným z různých c souborů projektu?


      Díky.


      Honza Půhoný





      Dne 13. ledna 2014 22:13 Martin Persich <persich na transcon.cz> napsal(a):

        A ještě jeden postřeh. Pokud se jedná o buffer pro 16-ti znakový LCD displej, tak pro použití funkce "strcpy()" je nezbytné, aby tento buffer měl délku 17 znaků (pro uložení ukončující "nuly" - '\0' ). Jinak dojde k nedefinovanému přepsání "následující" proměnné.
        Martin. persich na transcon.cz

          ----- Original Message ----- 
          From: Aleš Novák 
          To: HW-news 
          Sent: Monday, January 13, 2014 9:32 PM
          Subject: Re: Mikro C PIC - string - problém


          Nemelo by to byt spise takhle:
          stcrpy(prvni_r,"testovaci napis");

          Jmeno pole je samo o sobe pointer na jeho prvni polozku.

          Ales


          13. ledna 2014, 20:31:59, napsal jste:


               Zkuste stcrpy(&prvni_r,"testovaci napis");



                LK


                Dne 13.1.2014 19:53, Jan Půhoný napsal(a):
                Zdravím konferenci,

                mám tady takový lama problém v C (Mikro C pro PIC řady 16).

                V proměnné prvni_r mám znaky pro první řádek LCD displeje (pak to vypisuji přes Lcd_Out(1,1prvni_r); - to funguje.

                //definice

                unsigned char prvni_r[16];

                //editace znaků

                prvni_r[5] = 223;
                prvni_r[6] = 'C';
                prvni_r[7] ='  ';

                Lcd_Out(1,1prvni_r); //na pozici 5,6,7 mi to vypíše °C
                to funguje ok

                Proč ale nefunguje toto:

                prvni_r="testovaci napis"; 

                na tomto řádku to hází error: Assigning to non-lvalue

                Co s tím, abych tam mohl dávat jak celé řetězce a zároveň editovat jednotlivé znaky?

                Díky,

                Honza Půhoný


                _______________________________________________
                HW-list mailing list  -  sponsored by www.HW.cz Hw-list na list.hw.cz http://list.hw.cz/mailman/listinfo/hw-list  





          -- 
          S pozdravem,
           Aleš
           alesh.novak na email.cz 


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


          _______________________________________________
          HW-list mailing list  -  sponsored by www.HW.cz
          Hw-list na list.hw.cz
          http://list.hw.cz/mailman/listinfo/hw-list



        _______________________________________________
        HW-list mailing list  -  sponsored by www.HW.cz
        Hw-list na list.hw.cz
        http://list.hw.cz/mailman/listinfo/hw-list






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


      _______________________________________________
      HW-list mailing list  -  sponsored by www.HW.cz
      Hw-list na list.hw.cz
      http://list.hw.cz/mailman/listinfo/hw-list



    _______________________________________________
    HW-list mailing list  -  sponsored by www.HW.cz
    Hw-list na list.hw.cz
    http://list.hw.cz/mailman/listinfo/hw-list






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


  _______________________________________________
  HW-list mailing list  -  sponsored by www.HW.cz
  Hw-list na list.hw.cz
  http://list.hw.cz/mailman/listinfo/hw-list
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20140114/d08dc789/attachment-0001.html>


Další informace o konferenci Hw-list