Skocz do zawartości

Działania na stringach


marex

Pomocna odpowiedź

Witam,

Zaczynam naukę programowania w C na AVR.

Napisałem kod do obsługi UART i pojawił się problem:

uart_puts("Text " , uart_rx_bufor , "\r\n");

Błąd: Too many arguments.

Dokładnie, to w Bascomie było:

print("Text " ; uart_rx_bufor ; "costam");

Czyli składanie średnikami.

Jak w C składać text przed wysłaniem ?

Link do komentarza
Share on other sites

W tym wypadku, najprościej nie składać.

Po prostu wyślij kolejno napisy, złożą się same:

uart_puts("Text ");
uart_puts(uart_rx_bufor);
uart_puts("\r\n");

Jak kiedyś będziesz potrzebował sklejać napisy, to zawsze jest funkcja strcat().

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

Dobrze, że jest efektywny, ale niekiedy chciałbym mieć wybór.

Chociażby w jednym przebiegu wysłać ciąg, żeby nie pojawiały się przerwy czasowe.

Na temat strcat() znalazłem tylko przykłady z łączenia 2 stringów.

Czy to jego ograniczenie, czy można większą ilość ?

Link do komentarza
Share on other sites

Przerwami nie masz się co przejmować. Nawet jak opóźnienie będzie 1us, nikt tego nie zauważy.

Jeśli bardzo chcesz mieć wybór i duże możliwości, zobacz funkcję sprintf(). W niej możesz połączyć nawet 10 stringów, dodać zmienne liczbowe, wyświetlić je jako hexy i co tylko chcesz...

Ale jak sprawdzisz wielkość programu, możesz być nieco zaskoczony.

[ Dodano: 09-08-2014, 17:16 ]

Ogólnie, w C można przekierować domyślne wyjście na UART, wtedy funkcja printf() będzie wypisywać na złącze szeregowe. Pewnie takie rozwiązanie byłoby najbliższe bascom-a.

W sieci powinny być gotowe przykłady jak to zrobić. Kod zależy od kompilatora, inaczej się przekierowuje pod Keil-em, inaczej pod gcc, ale jak się raz to zrobi, wszystko działa łatwo i miło, a kod mógłby wyglądać tak:

printf("Text %s \r\n", uart_rx_bufor)
Link do komentarza
Share on other sites

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...

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.