Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

ANSI C - Tworzenie stringa z tablicy

Kubbaz 12 Sty 2015 11:57 597 4
  • #1 12 Sty 2015 11:57
    Kubbaz
    Poziom 26  

    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ę?

    0 4
  • #2 12 Sty 2015 12:24
    mpier
    Poziom 16  

    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.

    0
  • #3 12 Sty 2015 12:32
    Kubbaz
    Poziom 26  

    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.

    0
  • #4 12 Sty 2015 12:43
    mpier
    Poziom 16  

    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.

    0
  • #5 13 Sty 2015 14:02
    Krzysztof Gustaw
    Poziom 23  

    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.

    0