 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
rafaellsi Član


Pridružen-a: Ned 11 Sep 2011 18:54 Prispevkov: 479 Aktiv.: 2.86 Kraj: Radovljica
|
Objavljeno: Pet Jan 29, 2016 7:08 pm Naslov sporočila: |
|
|
Variant kako to izvesti je verjetno mnogo, katera je bolj pravilna oz. po PS-u pa ne bi vedel.
- če rabiš združevati stringe (tabele znakov) le za izpis, si lahko narediš tudi neko funkcijo, ki ti izpiše stringa enega za drugim, npr.:
Koda: |
void IzpisiOba(char *n1, char*n2) {
Serial.print(n1);
Serial.println(n2);
}
IzpisiOba(niz1, niz2); |
- lahko uporabiš funkcijo strcat, ..., kjer prvemu nizu dodaš nekaj, npr;
Koda: |
char niz1[] = "To je";
char niz2[] = "niz";
strcat (niz1,niz2);
Serial.println(niz1);
.. |
- deluje tudi funkcija sprintf(), kjer si lahko sestaviš poljuben nov niz
Koda: |
char niz1[] = "To je";
char niz2[] = "niz";
char sestNiz[50];
int decst = 1;
sprintf(sestNiz, "Setstavim " %s " in " %s " v " %d, "niz", niz1, niz2, decst);
Serial.println(sestNiz);
|
|
|
Nazaj na vrh |
|
 |
vilko Član



Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3361 Aktiv.: 14.18 Kraj: Dragomer
|
Objavljeno: Sob Jan 30, 2016 9:01 am Naslov sporočila: |
|
|
chaos je napisal/a: |
Konverzije se pa da delati tako:
Koda: |
// iz char* v string
char* niz1 = "ABCD";
string niz2 = string(niz1);
// iz string v char*
string niz3 = "ABCD";
char* niz4 = niz3.c_str(); // ta pointer je veljaven samo dokler niz3 ni spremenjen!
|
LP! |
Hvala! Konverzija iz char v string gre odlično.
Pri obratni konverziji pa
pri ukazu char* niz4 = niz3.c_str();
pa dobim invalid conversion from 'const char*' to 'char*' [-fpermissive] _________________ Nihče ni za vojno in vsi so za mir,
vsi so za bratstvo, nihče za prepir.
Od same ljubezni vsak čas na granatah
bo vtisnjeno geslo: "Darilo za brata"
Janez Menart |
|
Nazaj na vrh |
|
 |
vilko Član



Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3361 Aktiv.: 14.18 Kraj: Dragomer
|
Objavljeno: Sob Jan 30, 2016 9:16 am Naslov sporočila: |
|
|
Hvala vsem za pomoč,
Kar iščem, je da bi enkrat definiral bodisi string bodisi array of char in na isti vsebini delal manipulacijo tako z znaki, kot z orodji za manipulacijo s stringi.
V Bascomu (Bog mi odpusti!) je to easy:
definiram
Koda: |
Const Maxlen = 48
Dim niz1 As String * Maxlen
Dim xniz1(maxlen) As Byte At niz1 Overlay |
in na istih bajtih (at niz1 overlay) v procesorju sedita niz1, ki je string in xniz1 ki je array of characters.
In potem lahko delam z vsebino karkoli hočem.
Sem poizkusil v Arduinu z pointerji, toda tu pointer pridobi značilnosti variable, za katero je definiram. Tako v arduinu pointer+1 ne pomeni en bajt naprej, temveč en arrayelement naprej, se pravi en bajt, en word, en integer ali en string (veliko bajtov) naprej.
In ko sem v pointer, tipa char hotel dati naslov stringa, pravi neveljavna konverzija.
Tudi c arduina ni običajen C in recimo ne pozna printf ukaze, ne jamra, ampak jih ignorira. _________________ Nihče ni za vojno in vsi so za mir,
vsi so za bratstvo, nihče za prepir.
Od same ljubezni vsak čas na granatah
bo vtisnjeno geslo: "Darilo za brata"
Janez Menart |
|
Nazaj na vrh |
|
 |
vilko Član



Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3361 Aktiv.: 14.18 Kraj: Dragomer
|
Objavljeno: Sob Jan 30, 2016 9:33 am Naslov sporočila: |
|
|
Obstaja funkcija, bi naj bi naredila konverzijo iz stringa v bajte:
https://www.arduino.cc/en/Reference/StringGetBytes
Toda, kakorkoli kodiram, vedno mi najde neko napako, nikakor, da uspem predelati v niz.
Zakaj sem se zapičil v ta problem?
V C-u na Beagleboard-u, (ki je nekaj podobnega kot Malina-kolač) sem pred leti že sprogramiral funkcijo, ki preverja kontrolna dva znaka, pri NMEA telegramih. Gre za preprosto xor operacijo preko vseh znakov. Ta mi dela tudi na Arduinu, če je vsebina na razpolago v array fo char.
Ko pa sestavljam vsebino, ki jo želim poslati, mi prav pridejo stringconcatination ukazi, ki obstaajalo samo za spremenljivke tipa string.
Se pravi, da nujno rabim pretvorbo stringa v array of char. _________________ Nihče ni za vojno in vsi so za mir,
vsi so za bratstvo, nihče za prepir.
Od same ljubezni vsak čas na granatah
bo vtisnjeno geslo: "Darilo za brata"
Janez Menart |
|
Nazaj na vrh |
|
 |
Obelix Član

Pridružen-a: Pon 19 Maj 2008 13:59 Prispevkov: 1881 Aktiv.: 9.04 Kraj: Maribor
|
Objavljeno: Sob Jan 30, 2016 9:58 am Naslov sporočila: |
|
|
Mogoče najdeš tukaj kaj uporabnega. |
|
Nazaj na vrh |
|
 |
vilko Član



Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3361 Aktiv.: 14.18 Kraj: Dragomer
|
Objavljeno: Sob Jan 30, 2016 10:02 am Naslov sporočila: |
|
|
Ne preostane mi drugo: treba bo štrikat for zanko in v njej uporabiti funkcijo charAt ( ta dela), ki mi da en bajt/znak iz stringa. _________________ Nihče ni za vojno in vsi so za mir,
vsi so za bratstvo, nihče za prepir.
Od same ljubezni vsak čas na granatah
bo vtisnjeno geslo: "Darilo za brata"
Janez Menart |
|
Nazaj na vrh |
|
 |
chaos Član


Pridružen-a: Sob 16 Sep 2006 22:12 Prispevkov: 1063 Aktiv.: 4.66 Kraj: Zagorje ob Savi
|
Objavljeno: Pon Feb 01, 2016 1:29 pm Naslov sporočila: |
|
|
vilko je napisal/a: |
chaos je napisal/a: |
Konverzije se pa da delati tako:
Koda: |
// iz char* v string
char* niz1 = "ABCD";
string niz2 = string(niz1);
// iz string v char*
string niz3 = "ABCD";
char* niz4 = niz3.c_str(); // ta pointer je veljaven samo dokler niz3 ni spremenjen!
|
LP! |
Hvala! Konverzija iz char v string gre odlično.
Pri obratni konverziji pa
pri ukazu char* niz4 = niz3.c_str();
pa dobim invalid conversion from 'const char*' to 'char*' [-fpermissive] |
Uporabi:
Koda: |
const char* niz4 = niz3.c_str();
|
LP! |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 495 dni
Powered by phpBB © 2001, 2005 phpBB Group
|