Wpis z mikrobloga

@m8se: Zinkrementuje :) Najpierw przetestuje while(*str) (czyli sprawdzi czy wartość w arrayu jest 0, a potem zinkrementuje pointer. Tylko że zinkrementuje wartość zanim UART_putc zadziała więc tak jak @KrzaQ2 mówi nie wydrukuje pierwszego
@RARvolt: to jest taki "sprytny" zapis, rozbij to na opreację

while (*str) { bo patrzysz na znak wskazywany
put_c( *str ) bo używasz znaku wskazywanego
++ str; samo str, bo tu pracujesz naprawdę na adresie pamięci (aby go zwiększyć) a nie na jakimś znaku np na literze A. ++(*str) by zwiększało wskazywaną aktualnie literę np literę A na B.
@RARvolt:
zrób

do
UART_putc(*str);
while(*++str);

jeśli chcesz bez kończącego zera, a postinkrementacją (*str++) z nullem
* wyłuskiwanie ma mniejszy priorytet niż ++/-- (postfix - chociaż ma opóźniony zapłon i działa na wskaźniku nie wartości)
i musisz wyłuskiwać wartość by sprawdzić warunek bo inaczej sprawdzasz wskaźnik czyli defakto liczbę różną od zera, a wartość ma być ('\0' == NULL)
dzięki @pharo i @rfree

Doszedłem do rozwiązania

void UART_print(const uint8_t *str) {
while(*str) {
UART_putc(*str);
str++;
}
}

ale pomysł @pharo jest bardziej elegancki. Miałem właśnie problem z połączeniem ++ i *, plus dla Ciebie.
Typo, oczywiście ma być while (*str)

while (str) { bo patrzysz na znak wskazywany


by powtarzał dopóki adres pamięci nie jest zerowy.

No, pora iść spać ʕʔ