Niestety, ale jeśli chcesz tablicę wskaźników, przy czym wskaźniki wskazują na konkretne bloki pamięci, musisz je inicjalizować. Jeśli obie tablice są globalne, to bez problemu powinno dać się to zrealizować jakoś tak: [syntax=C]static char buff0[5][20]; char *menu_main[5] = { buff0[0], buff0[1], buff0[2], buff0[3], buff0[4] };[/syntax] lub równoważnie:...
Nie, to nie będzie działać, a jeśli nawet to przez przypadek. Problemem tutaj jest to, że tut jest 20-elementową tablicą wskaźników na typ char. volatile char tut[21]; void ekraned(void){ uint8_t w=0; LCD_Clear(); for(w=0;w<4;w++){ sprintf(tut, "%s%02d%s%02d",menu[(w...
to skoro padła odpowiedz jak poradzić sobie z problemem to powiem co poszło nie tak. w językach kompilowanych, na przykład C oprócz zwykłej tablicy istnieje także statyczna czysta tablica. [syntax=c]const char tablica[liczba][/syntax] gdzie liczba to naprzykład [syntax=c]#define liczba 100[/syntax] podczas przejścia preprocesora jak kompilator widzi...
Abstrahuję tu juz od sprintf i funkcji piszących na ekranie, których w tym miejscu **absolutnie** nie powinno być. Ogólnie masz racje, tutaj sprintf jest już po pomiarze (drugie przerwanie i tutaj jest zmierzony okres przebiegu). gu32_T1 < początek pomiaru gu32_T2 < koniec pomiaru Jednak wytyczne się zmieniły i można do moich celów zrobić inaczej....
void lcd_str(char* str); <- jak sam widzisz funkcja ta przyjmuję jako parametr tablicę znaków Aby na lcd wyświetlić liczbę przetrzymywaną w zmiennej liczbowej (pomiar1) potrzebujesz skorzystać z funkcji która przepisze kolejne cyfry do tablicy znaków. Możesz wykorzystać tutaj np funkcję sprintf coś w tym stylu: [syntax=c]unsigned int pomiar1; char...
Po raz "enty" piszę, żebyś wrzucał konkretny kod który pozwoli się odnieść do problemu, najlepiej z konkretnym komunikatem kompilatora w którym opisuje on co mu się nie podoba. Skąd ja mam wiedzieć, jaki jest typ zmiennej `tablica`? Czy jest to tablica dwu- czy trój-wymiarowa? A może to znów nie jest `char` tylko coś innego. P.S. Tym rzutowaniem na...
Ten kod który podałeś ma być użyty w programie głównym int main(void)? czy też w innym.(np ds1307.c) Czy tablica char o nazwie time ma zdeklarowane 6 elementów i co to jest za funkcja updtime.
no tak w uproszczeniu... char jest to typ danych (tzw. znak), jest to 1 bajt - czyli moze przymowac 256 roznych wartosci i wlasnie tak sa zakodowane znaki w ascii... int jest to typ, ktorego rozmiar to 2 bajty (zapisuje sie nim liczby naturalne)... to co produkujesz przy pomocy char welcome char welcome[64]; sprintf(welcome,"Witamy...
Ostatnio przeczytałem, że funkcja itoa jest szybsza niż sprintf , jednak ma o wiele mniejsze możliwości, dlatego postanowiłem zrobić test szybkości na mojej atmedze8. Oto fragment kodu #include <stdio.h> #include <stdlib.h> uchar _STwynik[8]; void czas_start(char p) { TCNT1 = 0; TCCR1B = p; } uint czas_stop()...
To jest błąd: [syntax=c] for(int q=0;q<3;++q){ odebrane[q]=UDR; } [/syntax] To trzykrotnie odczyta UDR, nawet jeśli w nim nic nie ma. W kolejnych przerwaniach masz odczytywać UDR i wpisywać pod q, jak q wskaże, że odczytałeś 3 bajty to ustawiasz flagę sygnalizującą, że w buforze są 3 bajty. Poza tym sprintf z %s zakłada, że masz string w formacie...
Witam wszystkich! Mam pytanie do wszystkich którzy mieli do czynienia z kompilatorem Ceibo. Czy ktoś z Was wyświetlał liczbę zmiennoprzecinkową na LCD za pomocą: sprintf (buffer, %f, x); write_text (buffer); U mnie wyświetla "<NO FLOAT>":!::?: Nie wiem co się dzieje. Pierwszy raz widzę coś takiego. Wyświetla wszystkie typy zmiennych tylko nie...
Teraz problem ze sprintf :D Na tej stronie pisze że pierwszy argument ma być wskaźnikiem: http://www.cplusplus.com/reference/clibr... Ale zaraz po tym, w „EXAMPLE”, jest przykład gdzie nie jest przekazywany wskaźnik lecz tablica (kompilator i tak przekazuje wskaźnik ale w kodzie podawana jest tablica). No więc nie wiem jak...
Michalko12 podał Ci gotowe rozwiązanie, sprintifem zamieniasz wartość konwersji na tekst a potem tablice do której zapisywał sprintif przekazujesz do f_write i tyle. To co podałeś nie dziala bo tablica c ma dwa elementy a Ty operujesz na trzech. 1. dziękuję za zainteresowanie :) 2. niestety nie w tym leży problem, tu jest oczywiście błąd powinno być...
Ostrzeżenia głoszą o niejawnej deklaracji funkcji sprintf, a jej deklaracja znajduje się w stdio.h
Witam Próbuję odczytać czas z zegara PCF8563, ale na wyświetlaczu LCD nic się nie wyświetla. Bardzo proszę o sprawdzenie poprawności poniższego kodu i wskazanie gdzie ew. powinienem coś poprawić. Ogólnie podłączyłem SDA i SCL przez rezystory 4,7k do Vcc oraz zastosowałem rezonator 32kHz, a przy nim kondensator 22p. Pomiędzy Vcc a GND wpiąłem kondensator...
no tak programista z bozej laski nie dodal 2 klamerek, teraz jjuz nie wyrzuca bledow, pytanie tylko dlaczego ekran tak jakby miga nic nie wyswietlajac, co robie jesscze zle? funkcje na pewno sa dobrze poumieszczane, bo do innej czesci programu wszystko dziala, ale umieszcze caly program zeby nie bylo watpliwosci:: #include <avr/io.h> #include...
Masz błąd w programie testowym. Tablice są zbyt małe - tablica test_a ma 7 elementów, a tyle ma sam napis "test_a: ", w efekcie efekt konwersji sprintf, nadpisuje pamięć dla test_b i stąd masz taki efekt.
Witam. Dziękuje za zainteresowanie. sprintf() zwraca do łańcucha tak? czyli coś takiego? : char tablica[10]; sprintf(tablica, %d, zmienna); WriteText("tablica"); Eh chyba coś knoce;) Przy takiej opcji wyświetli mi poprostu napis...tablica.
mamcpy() m e mcpy() albo sprintf() Albert
Proponuje skorzystać z funkcji sprintf np: sprintf(tablica, "%10.5f", liczba_float); W ten sposób w tablicy mamy już kolejne wartości od których należy odjąć kod ASCII cyfry 0 by otrzymać wartość liczbową i wpisywać za te wartość 0 jeśli jest tam spacja.
1. %02 http://mikrokontrolery.blogspot.com/2011... 2. [syntax=c]if(txt[x]==0) break;[/syntax] przerywa pętlę wysyłającą dane, gdy osiągnie koniec ciągu znaków, który to jest bajtem o wartości zero umieszczonym w tablicy txt[] przez funkcję sprintf.
Tak, ręcznie miałem na myśli po kolei wrzucać znaki do tablicy :) tylko dla testu oczywiście. Używaj sprintf czy analogiczny swój wyrób. W tej lini Text_1234[0] = "1234Test\0"; kompilator mógł wrzucać np część adresu do tego stringu.
Witam ! temp = ((~scratchpad[1])*16... + (((~scratchpad[0]... temp_calosci = temp; poprzecinku = (temp - temp_calosci)*10; // dzięki temu można pozbyć się minusa gdy jest-0.0625 st.C bo i tak wyświetla // do częsci dziesiętnych więc byłoby -0.0 st C <-- troche bez sensu if((temp_calosci+poprzecinku)...
witam, mam problem z konwersją float'a na tablice charów. char tablica[4]; sprintf(tablica, "%G", temp_in); USART_Transmit(tablica[0]... USART_Transmit(tablica[1]... USART_Transmit(tablica[2]... USART_Transmit(tablica[3]... w terminalu pokazuje się tylko znak zapytania...
Czyli nie dość, że na stosie masz 1 kB tablicę, to jeszcze używasz funkcji która jest znana z tego, że używa naprawdę DUŻO stosu. Zacznij od zmniejszenia tej tablicy albo przeniesienia jej do zmiennych globalnych, a następnie - jeśli nie pomoże - znajdź jak w Keilu zwiększyć rozmiar stosu.
Zapewne wrzucasz zbyt długi string do tablicy i ostatnie zero włazi na zmienną. Zauważ że nawet jeżeli twój wyświetlacz ma tylko 16 znaków i chcesz wpisać dokładnie 16 za pomocą sprintf to zawsze będzie dodatkowo na końcu zero (siedemnasty znak) bo tak działają funkcje stringowe w C. Powiększ tablicę i będzie dobrze.
Chociażby tak: [syntax=c] DIR dir; FILEINFO fno; pf_opendir(&dir, 0); [/syntax] 0 oznacza katalog root(główny), możesz wpisać zamiast 0 w "ścieżka do pliku" lub wstawić tablicę z zapisana nazwą [syntax=c] pf_readdir(&dir, &fno); [/syntax] odczytuje ci pierwszy plik w otwartym katalogu Możesz też np tak: [syntax=c] for(uint8_t numer_pliku=0;...
Weź wszystkie podstawowe pliki (startup, skrypt linkera, tablicę wektorów, Makefile) z jednego źródła, bo jak je mieszasz to nigdy nie wiadomo co nie zadziała. 4\/3!!
Bo może wektor przerwań dla tego akurat kanału DMA się nazywa inaczej? Porównaj nazwę Twojej funkcji z zawartością tablicy wektorów. Jeśli masz w projekcie pliki C++, to trzeba przerwania deklarować jako extern "C". 4\/3!!
Mam mały problem z C, piszę program do skalowania wartości liczbowej. Otrzymuję wynik jako liczbę 512 +/- 60. Chciałbym aby dla liczby 512 wyświetlane było 0, dla 522 -> 10, dla 502 -> -10 itd. Zrobiłem sobie pętelkę na "if" lecz coś nie działa bo cały czas mam "0". [syntax=c]unsigned int pomiar_x; signed int wynik_x; signed char tablica_x[4]; void...
Poprawiłem wszystkie powyżej wymienione błędy i wychodzi na to że działa w miarę ok [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <avr/pgmspace.h> #include <stdio.h> #include "lcd.h" #include "lcd.c" #define LED_PIN (1<<PB0) #define LED_ON PORTB |= LED_PIN unsigned int pomiar_x;...
Problem w tym, że właśnie na gets() może Ci się wywalić przy nauczycielu. Podajesz do gets() bufor o długości 5 znaków, a on weźmie i wpisze 180 znaków - i co? I pewnie się wywali. :P Twoje szczęście, że akurat kolejność operacji wygląda tak, że nawet jak gets() "trochę" nadpisze zmienne (tablica b, l, wskaźniki FILE*), to sprintf() czy fopen() to zaraz...
Witam i proszę o wyjaśnienie, dlaczego jeśli zmienna x w funkcji main jest typu long int to po zakończeniu pętli while ma ona wartość mniejszą (66) niż jeśli jest typu int (86). Dzięki. [syntax=c] volatile uint8_t timer1; ISR (TIMER0_COMPA_vect){ uint8_t x = timer1; if (x) timer1 = --x; } int main (void) { TCCR0A |= (1<<WGM01);//tryb CTC TCCR0B...
Wygrzebany fragment odczytu pozycji dotyku panela : Umieściłem kod w znacznikach syntax, w przyszłości proszę to samemu robić :)
wiec uzyj STRNCPY() on kopiuje konkretna podana ilosc znakow z jednej tablicy w druga i niesprawdza czy znak ktory kopiuje to zero.... I nie kombinuj z kopiowaniem, lepiej uzywaj do takich operacji funkcji sprintf()....
Podejrzewam, że skoro mówisz o konwersji, to znak to zwykły char, nie tablica, a sprintf o ile mnie pamięć nie myli, dorzuca \0 i w tym momencie robi Ci się fail. Proponuję zapoznać się z atoi itoa itp. tworami. Żeby nie było wątpliwości, itoa() również wymaga tablicy i również dorzuca '\0' 4\/3!!
Napisałem sobie programik do obsługi akcelerometru w C. Wszystko działa fajnie, ale chciałem jeszcze wynik przeskalować mnożąc go przez 1.5 i wtedy się pojawiają problemy. Chodzi o to że normalnie zakres napięć to -60:+60, ale ja chciałem to przemnożyć żeby zakres był -90:+90 (chodzi o stopnie), ale gdy zmienię linijkę: wynik_x = pomiar_x - 512; na:...
Po co używać sprintf do konwersji liczby całkowitej na stringa? To jest nieefektywne. W m8 sprintfa to możesz użyć, jak chcesz bezstresowo "mieszać" tekst z wartościami zmiennych i umieszczać to w tablicy, np x toa. Dlaczego z funkcją utoa też nie działało? Bo utoa jako argument przyjmuje unsigned int czyli na avr 16 bitów a więc max 65535. Ty potrzebujesz...
Wygląda w miarę ok, tzn. ma szansę działać. Co się wyświetla, a co się powinno wyświetlać? I gdzie się to wyświetla? sprintf tylko wpisuje do tablicy. Powinieneś zadeklarować tab tak, żeby nie trzeba było jej rzutować na char *. Zaleca się też używać snprintf(buf, sizeof(buf), ...) żeby nie wyjechać poza bufor.
No to jeśli user wprowadzi wartość to aplikacja powinna wrócić do wyświetlenia tych trzech opcji co są na początku. A co do mojego kodu to oczywiste jest że trzeba podać rozmiar tablicy, ja nie wiem jakiej wielkości potrzebujesz więc zostawiłem puste. A co do funkcji jak ona działa to: http://www.cplusplus.com/reference/cstdi...
Ale ty nie wysyłasz tam stringa, tylko gołe dane binarne, skanowanie nie działa, bo spodziewa się tablicy znaków w formie np. "3.1415". Wypisz sobie w LabView otrzymane dane, to będziesz miał obraz sytuacji. Albo przekonwertuj w mikrokontrolerze na string za pomocą sprintf(), albo po stronie LabView złóż te wysłane cztery bajty do zmiennej float. Prawdopodobnie...
Ja bym to zrobił tak: jest jakaś tam odmiana printf, chyba sprintf, która zwraca wynik do tablicy. W printf możesz sobie ustalić precyzje.
Witam Mam zbudowany układ na atmega 32 i do niego podpięte 4 czujniki DS18B20. Po włączeniu przez kilka godzin wszystkie pokazują właściwą temperaturę. Po tym czasie trzeci czujnik co jakiś czas pokazuje trzecie miejsce po przecinku, a czwarty czujnik również co jakiś czas pokazuje niewłaściwą temperaturę - w okolicach 130 stopni ( rzeczywista temperatura...
Witam bawię się przetwornikiem ADC i mam problem. Ale żeby nie przechowywać w tablicy zbyt dużo danych to zastosowałem wzór: (wzór otrzymany po przekształceniu standardowego wzoru na średnią, sprawdzony) średnia(k) = (N-1)/N * średnia(k-1) + 1/N * pomiar i tu jest problem, bo jak uruchomię program: [syntax=c]#include <avr/io.h> #include <util/delay.h>...
Nie wiem czy dobrze Cię rozumiem, ale czy nie chodzi Ci przypadkiem o funkcje typu lltoa(), sscanf(), czy też strol()? W ten sposób ze stringa zrobisz wartość, a później żeby przerobić to na stringa z wartością dziesiętną sprintf().
A funkcje sprintf mają jakieś znaczenie jeśli nic nie wypisuje na ekran, a dane chce tylko mieć w tablicy która podaję w vTaskGetRunTimeStats() ? Mógłbym wykomentować sprintf'y ? Zrobiłem tak, ale nie wiem czy teraz mi nie działa funkcja, czy mam źle skonfigurowany counter potrzebny przy tym feature. Wpisuje mi coś do tej tablicy, ale nie wydaje się...
Przedewszystkim zrób to inaczej... po prostu... main() { char bufor[20]; ... funkcja(bufor, ...); } funkcja(char* bufor, ...) { } I w ogóle nie ma problemu. Zmienna tmp w ogóle jest nieporozumieniem. Przecież wewnątrz funkcji możesz sobie zadeklarowac tablicę o dowolnym wymiarze... funkcja(...) { char tablica[1000]; } A pamięć możesz zwalniać gdzie...
Dzięki za odpowiedź, Jeżeli nie o wycieki pamięci chodzi to o nadpisanie niedozwolonych obszarów (np poza zadeklarowaną wielkość tablicy, sprawdziłem celowo do char tab 2. funkcja strtok2() może zwrócić null, więc instrukcja if(ptr Wygeneruje wtedy wyjątek - na pewno? Cel był taki, że jeżeli jest coś pod adresem ptr to ma kopiować a inaczej nic nie...
Witam! Chciałbym się dowiedzieć jak poprawnie używać liczby zmienno przecinkowe. Korzystam z win-avr i niestety nie mogę sobie poradzić. Dodałem biblioteki printf_flt oraz m (math) i odpowiednie opcje dla linkera (zywcem wziete ze strony avr-gcc) ale niestety jakiekolwiek uzywanie floatów daje mi 0 (sprintf'uje do tablicy znakow i usartem przesylam...
To powinno dać napis katy [syntax=c]LCD_WriteText("katy"); [/syntax] a to wyświetlić to co umieściła w tablicy funkcja sprintf (po zastosowaniu się do rad z linka, którego dał TMF) [syntax=c]LCD_WriteText(katy); [/syntax]
sprintf arduino sprintf atmega arduino sprintf
multiswitch unicable komunikacja radiowa video schemat
telefon stacjonarny telefon stacjonarny
Harman Kardon Uconnect Jeep Grand Cherokee – język polski, konwersja, firmware EU Błąd F241 w piekarniku Electrolux - czujnik temperatury