logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

dodawanie do ciągu elementów tablicy

Mihó 16 Cze 2009 15:50 1519 5
REKLAMA
  • #1 6663635
    Mihó
    Poziom 27  
    Posiadam zmienną typu unsigned char, która jest zapisana w postaci tablicy pięcioelementowej. Czy istnieje sposób, który pozwoli mi na przepisanie całości tablicy do jednej zmiennej, by móc ją później porównać z inną ?

    
    
    unsigned char zmienna2[5];
    char zmienna3[4];
    unsigned char zmienna[8];
    zmienna1[1]=5;
    
    lcd_init(LCD_DISP_ON);
    lcd_gotoxy(0,1);
    zmienna2[1]=zmienna1[1];
    itoa((unsigned char)zmienna2[1],zmienna3,16); 
    lcd_puts(zmienna3);


    (to jest wycinek kodu, całość mi działa). Wartość jest wyświetlana. Po wpisaniu i konwersji do ASCII (funkcją itoa) moja tablica wygląda następująco:

    zmienna2[0]: 1
    zmienna2[1]: 5b
    zmienna2[2]: c7
    zmienna2[3]: cb
    zmienna2[4]: ef

    Czy mogę to wszystko wgrać do jednej zmiennej, by później móc wykonać funkcję:

    if(zmienna4="15bc7cbef") 


    ?

    Dodano po 4 [minuty]:

    W ramach warunku if oczywiście mógłbym dodać

    if(zmienna2[1]=="5b"){...}

    Ale to mi nie działa
  • REKLAMA
  • REKLAMA
  • #3 6663698
    HIOB
    Poziom 17  
    Witam,

    W bibliotece "String.h" znajdują się funkcje operujące na łańcuchach (tablicach). Ich opis znajdziesz: tu po angielsku lub tu po polsku.
    Ogólnie najlepiej korzystać z dokumentacji bibliotek WinAVR, gdzie wszystko jest ładnie opisane.

    Pozdrawiam,
    Hiob.
  • REKLAMA
  • #4 6663758
    Mihó
    Poziom 27  
    Chciałem skorzystać z funkcji bibliotecznej, dla próby napisałem krótki program:

    
    #include <stdlib.h>
    #include <lcd.c>
    #include <string.h>
    #include <lcd.h>
    
    int main(void)
    {	DDRD = 0b00000000;
    	PORTD = 0b00000000;	
    	lcd_init(LCD_DISP_ON);
    unsigned char zm[6]= {"ab"};
    unsigned char zm2[]= {"vg"};
    	lcd_gotoxy(0,0);
    	lcd_puts(zm);
    	lcd_gotoxy(0,1);
    	char *strcat (char* zm, const char* zm2);
    	lcd_puts(zm);
    }


    Niezależnie od tego, czy w ostatniej linijce będzie zm, czy zm2, wyświetla mi albo jedną, albo drugą wartość, ale nie "sumę"
  • REKLAMA
  • Pomocny post
    #5 6663894
    HIOB
    Poziom 17  
    Witam,

    
    char tekst1[10] = "cos";
    char tekst2[4] = "kkk";        //pamiętaj, że ten łańcuch musi być o 1 dłuższy
    
    strcat(tekst1, tekst2);
    
    Tekst_T6963C(0, tekst1);
    


    Wszystko powinno działać.
  • #6 6675879
    loocasm
    Poziom 15  
    Mihó napisał:

    W ramach warunku if oczywiście mógłbym dodać

    if(zmienna2[1]=="5b"){...}

    Ale to mi nie działa


    Nie działa, bo gdy piszesz "5b" to oznacza już łańcuch składający się z dwóch znaków. Jeżeli to Twoje "5b" to wartość hex, to
    if (zmienna2[1] == 0x5B)

    powinno zadziałać.

    Aby sprawdzić, czy tam jest dana literka, należy użyć apostrofów, czyli
    if (zmienna2[1] == 'Z')


    Pozdrawiam,
    Łukasz
REKLAMA