Witaj problem pewnie jest z drugą pętlą for(i=4; i>=0; i--) {}; Jest tak że masz post inkrementację i gdy i = 1 po wykonaniu zrobi się 0 i sprawdza ponownie czy i >=0 i co i jest prawdziwe kolejny raz i co zrobi następnie zrobi 255 co i znowu warunek jest prawdziwy. Wiesz nie wiem jakiego typu jest twój char co jest domyślnie czy jest bezznakowy...
Owszem, można do wskaźników w C przypisywać arbitralne wartości: const unsigned char tablica = { 0x86, 0x88, 0x90 }; int i = 2; *((char *) tablica[i]) = 10; /* przypisanie wartości 10 pod adres z i-tego elementu tablicy */ char *ptr = (char *) tablica[1];
Czy aby przypadkiem w typie char nie zostaje zakazana wartość 0x00? Chciałbym stworzyć ciąg z dowolną zawartością, w tym też 0x00. Czy może ten ostatni bajt jest brany pod uwagę jedynie przez funkcje operujące na ciągach znakowych? To Ty decydujesz co znajduje się w komórce tablicy, ale jeśli to jest 0x00, to niektóre standardowe funkcje wykorzystają...
Jak kopiujesz dane binarne to memcpy() a nie strcpy(), choć tutaj równie dobrze można zrobić to na pętlach for(). Do zrobienia jak to określiłeś szufladek, deklaracja tablicy powinna wyglądać raczej tak: [syntax=c]char pamiecRx[105][8][/syntax] Możesz też zadeklarować tablicę o rozmiarze 8*105 i przesuwać się po niej.
Nie używam Keila ale coś takiego powinno wystarczyć [syntax=c]const unsigned char tablica[] = {dane}; const unsigned char *pointer pointer = tablica;[/syntax]
Nie chcę Cię martwić (bo jeżeli Twój kod działa jak powinien to OK), ale to co robisz w pierwszym poście 1 i 3 nie jest sobie tożsame. Kod w #1 jest jak najbardziej prawidłowy. Typ char to dla platformy .NET tak naprawdę 16-to bitowa liczba z zakresu 0...65535 Więc taki kod: znak o kodzie ASCII = 4 . Do tego w zasadzie typ char został stworzony. Jeżeli...
Napisałem Ci, co źle robisz: int * dla stringów-NIE const char * Niestety nie mogę sobie poradzić z utworzeniem kolejnej tablicy dlaczego? Co stoi na przeszkodzie?
W zasadzie tak nie należy robić. Dwie gwiazdki obok siebie to już jest podejrzane, a le trzy.... ;) Ale jeżeli chodzi tylko o gimnastykę z językiem C, to trzeba to zrobić tak: Dodano po 28 Tak, taka jest składania. Zmienna tablica wewnątrz funkcji funkcja() jest wskaźnikiem na zmienną tablica z funkcji main() . Trochę mylące jest użycie tej samej nazwy...
Ja tu nie widzę błędów i kompiluje pierwszym lepszym online compilatorem. Sprawdź w ustawieniach IDE czy masz dobra ścieżkę do kompilatora
Przyjrzałem się funkcji "strtok2()" i wniosek mam taki, że nie nadaje się ona do Twojego programu. W funkcji "odczyt_IMEI" potrzebujesz odebrać IMEI, które jest zawarte przed napisem "OK". Możesz to zrealizować w taki sposób (przenieś do siebie tylko funkcję "odczyt_IMEI"): [syntax=c]#include <iostream> #include <string.h> using namespace...
W indeksie tablicy pomyliłeś kolumny z wierszami. Zdefiniowałeś tablicę zawierającą 20 wierszy, po 5 znaków każdy, co oczywiście nie wystarcza do przechowywania tekstu zgodnie z określonym formatem.
Cudów nie ma, pokaż kod.
Tak przy okazji opinia Linusa: aa tiaa, ale to nie problem, zawsze po wyjściu z niej wystarczy dać : desc Dodano po 8 AD.1. zawsze, końcowe zero jest nieodłącznym elementem c stringów, więc słowo 'Ala' będzie miało cztery znaki. "Jeśli mam wyświetlacz 2x16 i chcę zapisać pełne 16 znaków w wierszu, to robię tablicę 16 bajtów, czy 17" - char bufor_1...
A mógł by ktoś podać kod dla tych współrzędnych? bo wiem jak wczytywać pojedyńcze znaki do tablicy ale już np takie cos jak 0.5489 nie wiem jak wczytac a tu jeszcze innna tablica do tego. Nie wiem jak wczytywać to tak jak by mialo rece i nogi bo takie cos to umiem ale nie wiem jak zrobic zeby wczytac to do float i zey wszystko bylo ladnie oddzielone...
Nie ma się co denerwować i nie wyśmiewam nikogo. Tylko napisałeś że ta tablica, np nr_danej0 jest tablicą liczb, z opisu transmisji wynika coś innego. Z kolei wklejona funkcja służy do odbierania, co z kolei działa pewnie dobrze. Pytanie tylko czy chcesz, aby funkcja ta była blokująca (czekała na dane) czy nie blokująca, tzn nie będzie blokowała programu...
Raczej: [syntax=cpp]const char* tablica = "costam";[/syntax]W C++ string literals ("costam") są typu const char[n], a próba ich modyfikacji (np przez wskaźnik do nich) wykopie nas do świata niezdefiniowanego zachowania, nie mówiąc już o tym, że na nowszych kompilatorach nareszcie dostaje się przynajmniej ostrzeżenie za taki kod, więc... Po prostu dodaj...
WOW! Tylu herezji w jednym poście nie widziałem. znaki ansii, ascii W sumie wymyśliłem sobie to tak że biorę zmienną np a="12345" To nie jest zmienna tylko tablica charów potem w pętli dodaje do każdej liczby 48, na końcu składam tablicę w 1 chara i wysyłam na lcd j To jest najlepszy kawałek:) Juuumi!:) Anyway masz liczbę np: uint8_t a=129; To musisz...
Zacznę od zera: czy możesz mi polecić co mogę sobie darmowo (znaczy w necie) poczytać ogólnie i o szczegółach, bo google zwraca masę na każdy temat - o różnej wartości, z błędami, nie do tego itp? Tyczasem kopię elkę i też jest różnie, nie wszystko co mi może być potrzebne jest, muszę się z kontekstu domyślać czemu tak a nie inaczej no i ogólnie brakuje...
Co znaczy, że program przestaje działać? Puszcza dym, czy co? Nie uzyskujesz żadnej odpowiedzi na terminalu? Trudno powiedzieć jak jest zbudowane getc, może w nim jest problem. uart_puts na pewno wysyła łańcuchy, a nie pojedyncze znaki? Wysyłając przez terminal znaki być może końcone są one znakiem \n lub CR LF, których nie odbierasz. Być może to bruździ...
Druga rzecz strcmp() porownuje dlugosci i zwraca zero jesli dlugosci sa takie same. Akurat to warto porownac for'em Ja się nie chcę czepiać, ale kolego, jeżeli słabo znasz C, to sprawdzaj wszystko dwa razy, zanim komuś podpowiesz. strcmp() służy właśnie do porównywania napisów, a nie długości, więc tu akurat jest dobrze. Jeżeli chodzi o techniki strukturalne...
a. bufor.length() NIE jest poprawny, jeśli 'bufor' jest zmienną typu char . Zmieniłeś typ zmiennej na string , dlatego Ci zadziałało. b. Jeśli zapis char *wskaznik = & bufor się kompiluje, to znaczy, że kompilator stosuje niejawny domysł zamieniający ten zapis na: char *wskaznik = &bufor . Przed napisaniem poprzedniego posta sprawdziłem kompilację...
http://www.cplusplus.com/reference/cstri...
Zmieniając typ na int w oryginalnym kodzie przenosisz 40 bajtów (20*2) na każdy po 4 cykle (2 wczytanie, 2 zapis) = 160 cykli. To jest minimalny czas, poniżej którego nie da się zejść. Jeśli memcpy działa szybciej, znaczy nie kopiuje wszystkich 40 bajtów (tylko 20 bajtów - jeśli nie zmieniasz trzeciego argumentu w wywołaniu funkcji), sam kod to wtedy...
Witam! Po pierwsze co mi się narzuca to nie uwzględniasz znaku liczby. Widzę też, że cząstkowe wyniki składasz w tablicy typu int. Nie ma takiej potrzeby zwłaszcza, że nie znamy jej rozmiaru w momencie wywoływania funkcji. Proponuje takie rozwiązanie funkcji suma: [syntax=c]int suma(char *t) { int inword = 0;/* Ta zmienna sygnalizuje że jesteśmy w liczbie...
Jeżeli zmienna2[0] == 0x31; //znak '1' zmienna2[1] == 0x32; //znak '2' //czyli liczba w ascii 12 to robisz zmienna1 = (zmienna2[0]-0x30)*10 + zmienna[1]-0x30; lub jeżeli zmienna2[0] ==1; zmienna1[1] ==2; //czyli liczba 12 to robisz zmienna1 = zmienna2[0]*10 + zmienna[1];
a probowales tak T1 = atoi( (const char*)test ); ?
Zapewne chodzi o to: [syntax=c] tablica.studenci[tablica.aktualny].imie = (char *)malloc(strlen(i) + 1); tablica.studenci[tablica.aktualny].nazwi... = (char *)malloc(strlen(n) + 1); [/syntax] Dodaj rzutowanie na "char *"
Tablice definiujesz tak: [syntax=c]char tablica[7][3]={"pn","wt","sr","cz","pt",... A używasz tak: [syntax=c]lcd_str(tablica[dnityg]); [/syntax]
Ja nie za bardzo rozumiem, co ty chcesz zrobić? Z czym związane jest N? Dlaczego mnożysz N przez 2? Do czego to ma służyć. w dodatku jak n jest większe od 1 to program wiesza się, To akurat normalne, bo indeks tablicy "idzie w krzaki". Napisz dokładnie co chcesz zrobić. Przykładowe dane wejściowe Co ma być zrobione i co ma powstać. Inaczej nie dojdziemy...
output[x] = '\0'; Gdzie x to koniec tego co sam wpisałeś. Wypisywanie tekstu trwa do pierwszego napotkanego znaku o wartości 0. PS Ewentualnie przed wpisaniem czegokolwiek do zmiennej możesz zrobić: #include <cstring> memset(output, 0, 255);
Można to zrobić np. tak: #define MAXINDEX 15 // ostatni index w tablicy unsigned int m =0; for (int a=0;a<4;a++) { m <<= 8; m |= pBuf[MAXINDEX - a]; } Uwaga: w tym przykładzie domyślnie typ int jest 32 bitowy. Ogólnie nie jest to regułą!!
Myślę że tak zmienna=*((uint16_t*)&buf ... Proszę nie udzielać błędnych porad! Taki kod jest nieprzenośny, a na dodatek zadziała tylko dla tablicy liczb, a nie dla tablicy znaków. Można zrobić tak: int godzina = 10*(buf[0]-'0') + (buf[1]-'0'); Najprościej jednak będzie użyć biblioteki standardowej:...
Problemem jest char *cmd[]; - to oznacza tablicę wskaźników na char, a nie wskaźnik na char. A skoro tablica o nieznanej liczbie elementów to wszystko co masz po przecinku to kolejne elementy tej tablicy. Czyli usuwasz [] lub nazywasz pola, np. .ptrF=.
Poprawki, które powinieneś nanieść do kodu, aby pozbyć się warningów (łącznie z sugestiami kolegów wyżej): lcd_ILI9341.c: In function 'lcd_pisz_tekst_32': lcd_ILI9341.c:377: warning: operation on 'temp' may be undefined Zainicjalizuj zmienną temp zanim zostanie użyta: [syntax=c]void lcd_pisz_tekst_32(uint16_t x, uint16_t y, char * str,uint16_t kolor,uint16_t...
ja to z reguły tak robie: std::vector<char> tablica_vector; tablica_vector.resize(27); u Ciebie tą drugą linie wrzuć do konstrutora. gdyby nie działało to spróbuj utworzyć wskaźnik do vectora w klasie i później przydziel pamięć: std::vector<char>* tab; // to gdzies w klasie tab = new std::vector<char>;//w...
Jesli te tablice maja taka sama strukture to prosciej do funkcji przekazac wskaznik do wlasciwej tablicy: uint8_t LCD_Char(int8_t mychr, uint8_t xPos, uint8_t yPos, char *tablica) i potem wywolywac: uint8_t LCD_Char(..., &tablica1[0]) lub uint8_t LCD_Char(..., &tablica2[0])
... Bzdury! Inicjalizacja tablicy w postaci char tablica[] = {'a', 'b', 0}; jest 100% poprawnym "napisem" w standardzie języka C - wartość zero (0, '\0') to zupełnie co innego niż znak zero ('0'); 4\/3!!
To nie są znaki tylko raczej bajty - tablica nie tworzy napisu (znak o kodzie 0 zakończyłby napis i wyszłoby 254). Gotowej funkcji do konwersji dziesiętnej raczej nie będzie. Można albo skonwertować to na napis dodając do każdego elementu tablicy wartość '0' i potem skorzystać z funkcji char * => int (scanf, atoi lub wręcz strumienie c++), albo...
tylko i wyłącznie dzielenie i odejmowanie. Czyli [0]=liczba/100 (stałoprzecinkowe - pascal - div) [1]=liczba/10-[0]*100 itd. oczywiście do wykonania w pętli.
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...
Zależy jak ją wyślesz Możesz wysłać jako ASCI(czyli 2 bajty) to potem na UC musisz ją wstawić do tablicy np 2 elementowej np. char tablica[2]; tablica[0]= uart_getc(); tablica[1]= uart_getc(); I potem funkcja ATOI (asci to int) int wynik = atoi(tablica); Albo po prostu w twoim terminalu wysłać te 10 jako int (1 bajt) i normlanie odebrać uint8_t wynik=uart_getc();
Z przykazań C: 1. Nazwa tablicy jest adresem do jej pierwszego elementu 2. Tablica znaków, to tablica znaków, a string to wskaźnik do pierwszego znaku w ciągu znaków zakończonego znakiem '\0' dlatego proponuję tablicę wskaników do znaku, gdzie każdy z tych wskaźników inicjalizujemy wartością NULL, a string przypisujemy dynamicznie z kopca char *tablica[34][22]...
Potrzebne mi to od zabawy AVR+ENC28j60. Chciałbym umieszczać niestringopodobne treści strony www bezpośrednio w kodzie c. Mając jej jako tablice w progmem łatwo mi korzystać z posiadanych funkcji. No właśnie o tym piszę. To jak traktujesz dane to kwestia zapisu w programie. Konwertowanie danych binarnych na kod c, po to, żeby potem je przekonwertować...
Te siedem adresów, to adresy kolejnych komórek tablicy - wskaźniki zajmują po 8 bajtów, więc każdy jest o 8 większy. Adresy ciągów tekstowych możesz wyświetlić tak: [syntax=c] for(int i = 0; i < 7; i++) { cout << (void *)(titles[i]) << endl; } [/syntax]
że program kończy swoje działanie bo napisie "raz" Krótki test i wyszło dlaczego tak jest. Otóż nie da się czytać spacji przez scanf("%s"). Szybkie pytanie do googla i odpowiedź (stackoverflow.com/questions/6282198/rea... się znalazła. Oto poprawiony program: [syntax=c]#include <stdio.h> int main(void){...
Takie coś się kompiluje, ale pisałem z głowy, więc trochę chyba te typy trzeba poprawić: bool exists in the current C - C99, but not in C89/90. Teraz można to uruchomić i testować i poprawiać
unsigned char (*tablica) Źle używasz wskaźnika, ot co jest nie tak. Zauważ, że wskaźnik jak nazwa zobowiązuje wskazuje adres pierwszego elementu tablicy cyfry. Inkrementując wskaźnik przesuwasz się po kolejnych adresach, kolejnych elementach tej tablicy. (at)excray, ekspertem nie jestem, ale sama nazwa tablicy jest wskaźnikiem iirc więc jednakowy jest...
Oj chyba kolega część książki mówiącą o tablicach przekartkował. ;) [syntax=c]char we_love[] = "cookies!"; // kompilator sam obliczy rozmiar tablicy i skopiuje "cookies!" do niej. char highway_to[4] = "Hel"; // tutaj również tablica będzie kopią "Hel" const char* swiety = "Mikołaj"; // swiety to wskaźnik na const char, zawiera adres literału "Mikołaj",...
if( jeżeli ma coś po przecinku while( dopóki ostatni znak to '0' remove usuń ostatni znak
1) Zapomnij, że istnieje coś takiego jak String... przynajmniej na Arduino. Używaj char (niestety z wszystkimi tego konsekwencjami). 2) Do trzymania komunikatów używaj pamięci FLASH, szkoda marnować RAM na każdy String w programie... czyli nie " Serial.print("Inicjowanie karty SD..."); " lecz " Serial.print(F("Inicjowanie karty SD...")); ".
tablica chara tablica chara progmem chara tablica atmega
sterownik pieca junkers schemat nagrywanie plików większy prąd ładowania baterii
magnum profi inverter instrukcja obsługi lutownica
Sanyo JA-2503 – prąd spoczynkowy, ustawienia bias, wartości rezystorów emiterowych VW Passat B7 1.6 TDI 2011 – maska otwiera się podczas jazdy, zamek, linka, naprawa