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

ANSI C - Jak utworzyć string z tablicy 32 znaków ASCII?

Kubbaz 12 Sty 2015 11:57 960 4
REKLAMA
  • #1 14321607
    Kubbaz
    Poziom 26  
    Posty: 1237
    Pomógł: 9
    Ocena: 30
    Witam wszystkich Elektrodowiczów!

    Posiadam tablicę o 32 komórkach, w których mogą być przechowywane kolejno znaki ASCII o dowolnej długości od 1 do 32 znaków. Teraz muszę utworzyć z tej tablicy ciąg tych znaków w postaci typu "string", który później będę porównywał do wzorca.
    Jak najprościej wykonać taką konwersję?
  • REKLAMA
  • #2 14321655
    mpier
    Poziom 29  
    Posty: 818
    Pomógł: 153
    Ocena: 141
    Hm,
    taka tablica jest "ciągiem znaków". W char tablica[32] zmieścisz dowolny "string" długości od 0 do 31 znaków. Napisz co chcesz osiągnąć.
    Pozdrawiam.
  • REKLAMA
  • #3 14321678
    Kubbaz
    Poziom 26  
    Posty: 1237
    Pomógł: 9
    Ocena: 30
    mam:
    uint8_t Keyword1 = "Test01";
    uint8_t Keyword2 = "Test02";
    uint8_t Keyword3 = "Test03";

    i mam tablicę:

    uint8_t KeywordTab [32];

    w której jest:
    KeywordTab [0] = 0x54;
    KeywordTab [1] = 0x65;
    KeywordTab [2] = 0x73;
    KeywordTab [3] = 0x74;
    KeywordTab [4] = 0x30;
    KeywordTab [5] = 0x31;
    czyli napis "Test01" w ASCII.

    Teraz potrzebuję porównać zawartość tablicy KeywordTab [32] z kolejno trzema stringami Keyword1, Keyword2, Keyword3. Jeśli w którymś przypadku będzie ona równa, to program wykona pewne dalsze czynności.
  • REKLAMA
  • #4 14321697
    mpier
    Poziom 29  
    Posty: 818
    Pomógł: 153
    Ocena: 141
    Dane w KeywordTab powinieneś zakończyć '\0', bo skąd inaczej wiesz, że za "Test01" nie ma dalszego ciągu? Tak działają funkcje z string.h, np porównujące napisy strcmp i strncmp.

    Jak nie chcesz string.h to porównanie napisów sprowadza się do porównania po znak po znaku, ze dwie linijki kodu. Dla konkretnych napisów możesz napisać lepsze funkcje.
  • #5 14325307
    Krzysztof Gustaw
    Poziom 23  
    Posty: 392
    Pomógł: 76
    Ocena: 32
    Witam!
    Nie wiem w czym problem. W końcu tablice można traktować identycznie jak wskaźniki to znaczy że jak masz tablicę KeywordTab[] to zapis *KeywordTab można traktować jako odwołanie sie do pierwszego (a właściwie zerowego) elementu. czyli
    KeywordTab[0] jest tożsame z *KeywordTab, KeywordTab[1] z *(KeywordTab + 1) itd. Wskaźniki i tablice są na tyle powiązane ze sobą że można je traktować zamiennie. Oczywiście typy tablicy i wskaźnika muszą być takie same!. Co do zadanie, jeśli w tablicy KeywordTab umieściłeś 5 znaków (oczywiscie radzę skorzystać z sugestii Kolegi mpier odnośnie wpisania do KeywordTab[6] bajtu zerowego)
    to porównujesz normalnie funkcją strcmp. Jesli z jakichs wzglądów nie można dostawić bajtu zerowego to skorzystaj z funkcji strncmp która porównuje ze sobą pierwszych n-znaków z obydwóch łańcuchów.
REKLAMA