 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
MatejŠ Neznanec

Pridružen-a: Sre 21 Nov 2007 19:22 Prispevkov: 2 Aktiv.: 0.01 Kraj: Ljubljana
|
Objavljeno: Sre Nov 21, 2007 7:32 pm Naslov sporočila: Pravilen zapis stringa v RealView |
|
|
Pozdravljeni
Imam začetniško uprašanje.
RealView prevajalnik v uVision-u noče prevesti naslednje vrstice:
char data[] = {"abcdefg", 0x1b};
javi: error: #67: expected a "}"
CARM prevajalnik prevede kodo brez problemov.
Kako bi lahko najbolj elegantno rešil problem.
Pretvorba ASCII znakov v HEX stevila ne pride v poštev.
Lp Matej |
|
Nazaj na vrh |
|
 |
chaos Član


Pridružen-a: Sob 16 Sep 2006 22:12 Prispevkov: 1063 Aktiv.: 4.65 Kraj: Zagorje ob Savi
|
Objavljeno: Sre Nov 21, 2007 9:40 pm Naslov sporočila: |
|
|
Ne poznam ne CARM ne Realview prevajalnika, pa vseeno ...
Najlažja in standardna rešitev je, da definiraš char data[], vendar podaš predvideno dolžino v oglati oklepaj.
potem lahko rečeš:
data[] = "abcdefg ";
data[x] = 0x1b;
kjer je x predzadnje mesto v zankovnem nizu.
Hm, mogoče rabiš še niz v narekovajih še cast-ati, da ne bo const ...
V bistvu ne razumem, kako ti je prevajalnik sploh prevedel tvoj primer, ker je, kolikor je meni znano, niz v dvojnih narekovajih v bistvu pointer na const char ... Si preveril dolžino tistega, kar ti je 'zmiksal' CARM prevajalnik? Da nima slučajno dolžino enako 3?
Če malo razmislim, tudi moj primer ne bo deloval, oz. lahko pride do kakšnih čudnih napak. Po moje boš moral uporabiti funkcije iz knjižnice string.h (strcpy ipd).
Ja včasih me res jezi, kako C ne zna delati skoraj nič pametnega s stringi ... |
|
Nazaj na vrh |
|
 |
MatejŠ Neznanec

Pridružen-a: Sre 21 Nov 2007 19:22 Prispevkov: 2 Aktiv.: 0.01 Kraj: Ljubljana
|
Objavljeno: Sre Nov 21, 2007 9:52 pm Naslov sporočila: |
|
|
CARM bi tole:
char data[]={"123",0x1b};
prevedel v:
{0x31, 0x32, 0x33, 0x00, 0x1b}
dodatek (0x00) naj bi bil oznaka za konec stringa.
lp |
|
Nazaj na vrh |
|
 |
chaos Član


Pridružen-a: Sob 16 Sep 2006 22:12 Prispevkov: 1063 Aktiv.: 4.65 Kraj: Zagorje ob Savi
|
Objavljeno: Sre Nov 21, 2007 10:02 pm Naslov sporočila: |
|
|
Čuden prevajalnik ... Kolikor je meni znano, je to čisto nestandardno.
V vsakem primeru, če vrne {0x31, 0x32, 0x33, 0x00, 0x1b}, to ni pravilno -- v c-ju mora biti 0x00 na koncu stringa (c ima null-terminated strings), razen če to ne misliš uporabljati kot string. Takega stringa na primer ne moreš uporabiti v funkciji printf ... |
|
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: 6 dni
Powered by phpBB © 2001, 2005 phpBB Group
|