Skocz do zawartości

Tablice w Arduino – #5 – znaki, cstring


Pomocna odpowiedź

  • 1 miesiąc później...
(edytowany)

Kolejny tydzień, kolejna część kursu. Tym razem dość sporo treści. Warto jest pobrać bardziej rozbudowane środowisko programistyczne, w którym będziemy mogli podejrzeć implementację standardowych bibliotek. 📚

Edytowano przez Gieneq
(edytowany)

Super kurs/tutorial!🙂 jest to najlepszy cykl artykulow o tablicach jaki widzialem, a juz z kilkanascie przeczytalem...gratuluje i dziekuje bo tez nowych rzeczy sie dowiedzialem o ktorych inni nie wspominali👍👍👍

Edytowano przez farmaceuta
Dnia 3.09.2021 o 11:17, Gieneq napisał:

Napisy zapisujemy w apostrofach (np. "napis"), ale znaki w cudzysłowach (np. 'a').

Na pewno? 🙂

(przepraszam, dopiero teraz zauważyłem)

@ethanak dziękuję, chciałem podkreślić tę różnicę i porządnie zamieszałem 😄 W innych wystąpieniach jest poprawnie.

@farmaceuta bardzo dziękuję, staram się podejść do tematu bardzo wnikliwie, choć zdaję sobie sprawę, że mało kto jest zainteresowany taką wnikliwością. Zaspojleruję, że jeszcze jedna część jest taka szczegółowa, później pojawiają się 2 przykłady. Szczególnie ostatni przykład może sporo wnieść - może nie w szczegółach implementacyjnych ale bardziej we wzorcach projektowych.

Tak w ramach offtopu, myślę ostatnio żeby napisać kilka artykułów o wzorcach projektowych używając Pythona, ale nad tym się jeszcze zastanowię 😉 

  • Lubię! 1

@Gieneq - to ja miałbym propozycję.

Wiem że o *printf można dużą i interesującą książkę napisać, ale po pierwsze nie warto kopiować tu podręcznika, a po drugie ostatnio mimo szczerych chęci z czasem u mnie trochę niespecjalnie...

Może warto dodać tutaj jakiś aneks dotyczący sprintf?

  • Po pierwsze: niebezpieczeństwo przepełnienia bufora
  • Po drugie: użycie bezpiecznego snprintf zamiast sprintf i sprawdzenie co zwraca
  • Po trzecie: sekwencje formatujące (przynajmniej te najważniejsze)
  • Po czwarte: co zrobić, aby *printf potrafił użyć floatów (dotyczy AVR-ów) i co w ogóle trzeba zrobić, aby funkcja printf mogła działać na AVR-owym Arduino.

Chyba warto, bo większość patrzy na rodzinę printf prawie jak na rodzinę Addamsów 😉

Coś w rodzaju (piszę z pamięci):

#define BUFSIZE 40
 
...
char buf[BUFSIZE];
if (snprintf(buf, BUFSIZE, "Napis: %s", jakis_napis) >= BUFSIZE) {
  snprintf(buf,BUFSIZE, "Napis: %-20.20s...", jakis_napis);
}

 

  • Lubię! 2

@ethanak dobry pomysł 🙂 gdzieś w połowie pisania kursu doszedłem do wniosku, że lepiej było zacząć pisać kurs C++ dla Arduino, bo wiele tematów jest potrzebnych, ale nie ma bezpośredniego związku z tematem tablic. Pomyślałem więc, że pójdę na kompromis (nie będę do końca zadowolny) - opiszę niektóre tematy pobieżnie, a jak coś wyniknie co będzie wymagać szerszego objaśnienia to zrobię dodatek. Także temat ten, wrzucę w dodatek, bo faktycznie jest przydatny. 👍

  • Lubię! 1

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...