www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Pravilen zapis stringa v RealView

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
MatejŠ
Neznanec
Neznanec



Pridružen-a: Sre 21 Nov 2007 19:22
Prispevkov: 2
Aktiv.: 0.01
Kraj: Ljubljana

PrispevekObjavljeno: Sre Nov 21, 2007 7:32 pm    Naslov sporočila:  Pravilen zapis stringa v RealView Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
chaos
Član
Član



Pridružen-a: Sob 16 Sep 2006 22:12
Prispevkov: 1063
Aktiv.: 4.65
Kraj: Zagorje ob Savi

PrispevekObjavljeno: Sre Nov 21, 2007 9:40 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
MatejŠ
Neznanec
Neznanec



Pridružen-a: Sre 21 Nov 2007 19:22
Prispevkov: 2
Aktiv.: 0.01
Kraj: Ljubljana

PrispevekObjavljeno: Sre Nov 21, 2007 9:52 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
chaos
Član
Član



Pridružen-a: Sob 16 Sep 2006 22:12
Prispevkov: 1063
Aktiv.: 4.65
Kraj: Zagorje ob Savi

PrispevekObjavljeno: Sre Nov 21, 2007 10:02 pm    Naslov sporočila:   Odgovori s citatom

Č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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
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