Skocz do zawartości

Działania na stringach


Pomocna odpowiedź

Napisano

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 ?

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

Taki kod jak podałeś napisałem na początku, ale wolałbym bardziej zwięźle.

Czyli w C nie można stosować takiego zapisu ? 🙁

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ść ?

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)

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