Skocz do zawartości

Tablice w Arduino – #5 – znaki, cstring


Gieneq

Pomocna odpowiedź

(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
Link do komentarza
Share on other sites

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
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

@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
Link do komentarza
Share on other sites

@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
Link do komentarza
Share on other sites

@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
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.