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...
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?
Nawet nie miałby powodu zrobić inaczej z wielu powodów. Tablica wielowymiarowa jest tak naprawdę tablicą tablic, a więc wszelkie właściwości z tym związane są nadal prawdziwe. PS. Była wzmianka o stringu. Trzymanie ich w ten sposób mija się często z optymalnym wykorzystaniem pamięci.
1. Dlaczego masz wogóle: int *newDesc a nie char* newDesc? 2. Na stringi alokuje się jeszcze miejsce na znak "\0".
Pierwszy przykład: funkcja sortuj przyjmuje 3-ci parametr typu char*, tymczasem Ty podajesz zmienną typu char[][]... itd.
A nie jest czasem tak, że tablice stringów muszą być inaczej deklarowane, żeby siedziały w PROGMEMie? Nie jest tak. Zwróć uwagę na różnicę między definicją tablicy wskaźników do stringów a definicją tablicy stringów. Tobie się właśnie to pomyliło. char *tab to nie to samo co char tab Tablica wskaźników do stringów musiałaby być inicjalizowana jak w...
Co robi ta linijka?[syntax=cpp]fflush(stdin);[/synt... Zadaj sobie również pytanie, co robi endl, którym strzelasz na lewo i prawo. ;) W ogóle to ten kod to jest mieszanka C i C++... W C++ masz takie ładne strumienie, którymi się tak różowiutko i przyjemnie pracuje z plikami, a wybierasz fopen i spółkę? ;) Później napiszę coś o samym programie, ale...
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",...
Na ATtiny kod musi być w miarę optymalny. Zapomnij o Stringach. Masz char *. Wklej kod, napisz, co chcesz osiągnąć, a ktoś pomoże.
%s jest do wyświetlania stringów (char*), a ty pakujesz tam liczby, nie dziwne, że nie działa tak jak byś chciał. 4\/3!!
Przede wszystkim wydaje mi się, że nie zdajesz sobie sprawy z tego, że w C/C++ tablice są numerowane od 0. Tak więc tablica zdeklarowan tak: char bufor[5]; Jest 5-cio elementową tablicą o elementach, do których możemy się tak odwołać: bufor[0]='a'; bufor[1]='z'; bufor[2]='1'; bufor[4]=NULL; Natomiast w przypadku...
#include <stdio.h> . . . unsigned char bufor [10]; unsigned char dana sprintf (bufor, "%d", dana); WriteLCD(bufor); Poczytaj o formatowaniu stringow funkcja sprintf (printf) a wszystkiego sie dowiesz: jak wyswietlac w postaci hex, jak wyswietlac float, stringi etc. pozdrawiam BF
char tab[12][12][12]; strcpy(tab[3][10], "ala ma kota");
Z racji tego, że z tablicami jest problem zmieniałem troszkę koncepcję. Czy jest możliwość mając np 3 Stringi : Tak, taka możliwośc istnieje ; te twoje stringi jak założyłeś w pytaniu; będą stałymi (z góry znane) i rezydowac w pamięci ROM. Utworzysz ‘array of arrays ’.. Jeżeli zechcesz je ‘uzmiennic’ i trzymac w RAM - to tego...
A czy on działa? ;) Nie widzę zawarcia żadnych bibliotek... W tytule pisałeś o programie w C++ a to jest chyba bardziej program w gołym C, korzystasz ze stringów char[], metody dostępu do plików też są chyba z C. Z jakich materiałów korzystałeś, tworząc ten zapis/odczyt z pliku?
Dzięki Saabotaz, zrobiłem jak napisałeś. Okazało się, że problemem był *char do ktorego ładowałem stringi zmieniłem go char[] i ruszyło. Swoją drogą dziwne :)
Jeśli nadal pytasz o C, to taki przykład powinien Ci to objaśnić: imie musi być na tyle duży by pomieścić każde ze spodziewanych imion. Po każdym kopiowaniu do bufora nadpisywane jest tylko tyle znaków ile zawiera w sobie kolejne imię, oczywiście plus jedne znak 0, bo to są stringi.
jeśli dobrze widzę, to korzystasz z "getline" do pobrania danych z otwartego pliku, "getline" jest po pierwsze funkcją z C a nie C++, powinno się tego unikać jeśli chcemy mieć porządek w kodzie, a po drugie operuje na stringach ( co gorsza stringach char* a nie C++owych stringach ), więc z tych dwóch powodów, a zwłaszcza drugiego, trzeba ją zmienić...
Wygląda na przepełnienie stosu. Na początek wywal wszystkie stringi do FLASH, np. [syntax=c]__flash const char text[81]="ABCDEFGHIJKLMNOPRSTW" "NIE TA LINIA :( " " " "Maciek mowi: ";//PRSTUVWXYZabcdefghijklmnoprstuvwxyz1... [];'\\,./!(at)#$%^&*()`";[/syntax] i [syntax=c]snprintf_P(text, 21,PSTR( "%s%04d%02d%02d %02d:%02d:%02d "), dow, (uint16_t)time.year...
powinieneś zapoznać się z avr-libc-user-manual standrdowa funkcja do łączenia stringów: 6.20.3.11 char ∗ strcat (char ∗ dest, const char ∗ src) Concatenate two strings. The strcat() function appends the src string to the dest string overwriti acter at the end of dest, and then adds a terminating ’\0’ character. The overlap,...
Prawie dokładnie jak zapisałeś. Tylko wyświetlać masz zawartość z tablicy, a nie tekst "tablica char* tablica choc mając stałą długośc możesz po prostu zrobić tablicę dwuwymiarową c har tablica ).
Po pierwsze: w GLCD nie ma funkcji wyświetlającej zmienne. Są tylko wyświetlające stringi (zresztą tez do poprawki, bo rzucają warningami o konwersji typów uint/chr). [syntax=c] int temperatura; char napis[6]; sprintf(napis, "Temperatura: %d", temperatura); GUI_Text(0,0,napis,Black,White); [/syntax]
Dodaj log debugowy w setupie aby sprawdzic czy nie resetuje Ci się mikrokontroler. Używałbym char[] zamiast String i porównanie stringów strcmp(). Zamiast tej ściany if-else wrzuciłbym komendy do jakiejś tablicy structów. Gdzie struct zawierałby dwa pola on i off które wskazują na komendy. Indeks tablicy wskazywałby który elektromagnes właczasz/wyłączasz....
Masz znaki specjalne w stringu(\n może też \r) i pewnie dlatego nie działa. Spróbuj tak: [syntax=c] char c = serverClients[i].read(); if(c >= ' ') { command += String(c); } if(c == '\n') { Serial.print("\tRecived: "); Serial.println(command); //TO DZIAŁA! if(command =="info") { [/syntax]
Ktoś robie inspekcjie paneli (stringi) na falownikach SofarSolar przez charakterystyką prądowo-napięciową? Przykladowo, inspekcja PV paneli w Huawei można robić przez FusionSolar albo przez webinterface loggera.
Trochę mylisz pojęcia. string imie[15] to 15 elementowa tablica stringów (czyli taka tablica na 15ście wyrazów). A tablica char imie #include <iostream> using namespace std; int main() { char imie[15]; cout<<"Wpisz imie: "; cin >> imie; char znak_konca= '\0'; //sprawdzenie czy kuba? if(imie[0]=='k'...
To jest właśnie jak się uczy "na kodach" z sieci i YouTube i się wszystko płacze stringi C++ z char * . Trzeba poczytać trochę o podstawach programowania w C++
A czy jesteś pewny, że nazwa jest za każdym razem oddzielnym obiektem? String też jest klasą i pola tego typu to referencję. Może masz rożne obiekty Food, ale wszytkie są powiązane do jednego napisu. Deklaracja String l_00 = "" nie tworzy nowego obiektu, tylko przypisuje referencję do statycznego obiektu. Z drugiej strony w Javie Stringi są 'niemodyfikowalne'...
Mogę błysnąć :) Znalazłem rozwiązanie problemu. Wykorzystałem jedną z ciekawych właściwości CCS, mianowicie możliwość deklaracji takich tablic: const char tab[][*] = {"AAA", "BBB"... } Teraz chcąc porównać odebrany z uart ciąg z jakimś stringiem robie to tak: #define AAA 0 #define BBB 1 switch (szukaj(bufer))...
Arduino ESP polega na prekompilacie z którego nie ma możliwości wycięcia nieuzywanych funkcjonalności, dlatego część flasha i ramu z zasady tracimy, tu faktycznie jest zonk. Za to w C mniej wiecej wiesz ile pamieci program ma do dyspozycji, tutaj lua potrafi sie nagle wykaszanic i nie bardzo wiadomo czemu, co sie stało i dlaczego? Zapisze to co jest...
Chodzi o deklarację zmiennej data W tym przypadku wystarczy, że bufor data zadeklarujesz jako static. Masz tu jeszcze kilka błędów. Funkcja receive zwraca char a Ty próbujesz zwrócić char *. Dodatkowo w main próbujesz przypisać to co zwraca receive do tablicy buffer (co sie nie powinno skompilować). Spróbuj tak: [syntax=c] static const unsigned char*...
To po co mieszasz z typami stringów? Stosuj je konsekwentnie, to nie będzie problemów. Windows ma dla wygody odrębne funkcje do różnych typów stringów - stosuj te właściwe, dla zwykłych char* to są z A na końcu. A jak koniecznie chcesz mieć w programie inne typy stringów (po co?), to w tych linkach, które podałem, są wskazówki, jak to robić.
Pierwszy parametr makra DnsQuery jest typu TCHAR* a właściwe funkcje to DnsQuery_A, DnsQuery_W, DnsQuery_UTF8. Jeżeli nazwę hosta masz w char[] (ale nie UTF8 ) to użyj DnsQuery_A. Jawne castowanie stringa na wstring nie jest możliwe w C, bo nie obsługuje on stringów natywnie. A skoro parametry pobierasz z linii poleceń (funkcja _tmain), to od razu masz...
bez gwiazdek char *napis[10] = {"HELLO"}; -> to jakies ufo - wskaznik na tablice ewentualnie tablica wskaznikow [; powinno byc: char napis[]="HELLO"; LCD_WyslijLitery(*napis); -> kolejne ufo (podstawy c), do funkcji powinienes przekazac adres pierwszego elementu, a tak sie sklada, ze nazwa tablicy jest wskaznikiem na pierwszy element, czyli: LCD_WyslijLitery(napis);...
To ja nie rozumiem jaki masz problem. Arduino to C++ to po prostu łaczysz te stringi w jeden. String i char[] lub char* to są zupelnie inne typy. W dalszym ciagu nie rozumiem w czym problem.
struct wezel *iter = pierwszy; while(iter) { iter = iter->nastepny; } to na pewno nie zadziała poprawnie. przejdzie przez wszystkie elementy, ale po takiej pętli iter zawsze będzie równy NULL. co do tego: Lista l; l+="zabawa"; co do tego to na oko bez kompilowania wydaje mi się że skoro "zabawa" jest typu const char*...
z tego co zrozumialem to muszą być wprowadzane i zapamiętywane jako stringi ( lub w c jako char* ).
Liczba: 8002930403 ma 10 cyfr, wiec raczej będziesz potrzebował bufora znaków (char *) o długości o jeden większego, by na ostatnim miejscu umieścić 0. Jednak liczba 20 000 000 000 ma 11 cyfr, więc buffor możesz odrazy zrobić na 12 znaków. Następnie możliwe że tracisz dokładność w wyniku działania tych trzech operacji: (12000000000/4095)*data.ctrl....
Prowadzący sugerował, że łatwiej zrealizować jego polecenie na stringach, a nie na charach. Wszyscy, którzy na zajęciach zaczynali z charem dostawali opieprz :DD - T.Jeleniewski PWr
Przyjrzyj się dokładnie temu co napisałem - właśnie do separowania parametrów się doskonale nadaje. Skrócenie łańcuch następuje niejako samoczynnie - nie potrzeba dodatkowej pamięci kopiowania Ogólnie: zapis char t[]="abcde" oznacza tablicę 6 elementową (5 liter + 0) przy czym t z definicji wskazuje pierwszy znak (a) w związku z tym t+2 wskazuje 3 znak...
Witam! Jak zmienić poniższy zapis, aby w najprostszy sposób uzyskać 3 tablice wskaźników na 6 różnych stringów? Dla poniższego przykładu kompilator tworzy dwa stringi ("wyl" i "buf") i w do każdej tablicy wpisuje wskaźniki na te same stringi. [syntax=c] char *sOut1[] = { "wyl ", "off " }; char *sOut2[] = { "wyl ", "off " }; char *sOut3[] = { "wyl ",...
Po co łączyc jak można wysyłać na bieżąco ( szkoda pamięci). println chyba moze wysłać stringa (nie trzeba char*).
Sorki nie zauwazylem ze to progmem. Pointery w progmem nie istnieja w sposób tak rozumiany jak w normalnej pamieci - tak ze tak łatwo nie bedzie. [syntax=c]#define BUFFLEN 18 char __buff[BUFFLEN]; strncpy_P(__buff, (const char *)pgm_read_word(&(ptr_to_text[0])), BUFFLEN - 1); __buff[BUFFLEN -1 ] = 0;[/syntax] i dopiero mozesz wolac swoja funkcje cos...
Przy okazji pytanie, czy każda operacja na stringach wymaga a by dany string był zakończony znakiem '\'? W języku C string to tablica znaków zakończona "null terminating character" którym jest "(char)0" albo inaczej zapisany '\0`. Wszystkie funkcje operujące na stringach wymagają aby ich parametry były C stringami (z małymi wyjątkami np strncpy) sizeof("1234")...
Dziwne zachowania = mało RAM lub "jazda" po pamięci (nadpisywanie tablic, stringów). Ile znaków zarezerwowałeś na stringi (npGodzina) a ile one zajmują?
czyli cos w stylu: no właśnie żaden z tych ;) Ja Ci radziłem inaczej, nie operuj na stringach tylko na char`ze, 1. czytaj char z pliku 2. jesli < to ustaw znacznik 3. jesli > to kasu znacznik 4. jesli nie ma znacznika to wyslij znak do pliku wyjsciowego 5. jesli nie koniec pliku to skocz do 1.
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...
W linkach które podeslales nie ma nic o c_stringach. Wiedza ktora tam jest opisana jest podstawowa i ja posiadam. Masz rację wiedza ta jest podstawowa, aczkolwiek jej nie posiadasz.C-string jest to po prostu tablica znaków char , która reprezentuje ciąg znaków. [url=https://www.youtube.com/watch?v=ZGt... jest to w miarę dobrze opisane. Ostatnio...
[syntax=cpp]element.imie_nazwisko=(konwe... Prawdopodobnie chciałeś stworzyć nowe stringi, ale tego tak się nie robi. Użyłeś właśnie operatora „przecinka” (nawet mimo tego, że są tam nawiasy). To co jest powyżej ma taki sens: do element.imie_nazwisko przypisz rozmiar wskaźnika (czyli...
Przy założeniu że char== bajt Na urządzeniach pewnie tak, ale na Windowsie / w internecie nie koniecznie, zależy skąd te Stringi pochodzą
chara stringi chara const chara chara const chara konwersja
rozruch bezpośredni client novell karta pamięci uszkodzona
wkrętarka milwaukee tester rezonatorów kwarcowych
Pług do śniegu – budowa, sterowanie, czujniki, elektronika, marki Aebi-Schmidt, Volvo, BYD Bosch BO1150 Audio 30 APS kod radia – jak odzyskać PIN, numer seryjny, blokada