Oříznutí pole chrar
Oříznutí pole chrar
Ahoj všem, potřeboval bych radu. Mám v projektu pole char znaků do kterého načítám data. Data jsou ve formátu -"Tohlemenezajima tohlechci". A já potřebuju oříznout "Tohlemenezajima" aby mi zůstalo pole jen s "tohlechci". To co mě nezajímá má pevnou délku a to co chci může být od 1 byte do teoreticky neomezeně.
Snad se to dá pochopit.
Je na to nějaký jednoduchý ,ideálně ,postup?
Díky
Snad se to dá pochopit.
Je na to nějaký jednoduchý ,ideálně ,postup?
Díky
https://arze.cz - ARduino Zapojení Elektronika
-
- Příspěvky: 1030
- Registrován: 06 zář 2017, 20:04
- Reputation: 0
- Bydliště: Brno
- Kontaktovat uživatele:
Re: Oříznutí pole chrar
Když nezajímavá data mají pevnou délku, tak prostě začni ukládat do pole až platná data.
Re: Oříznutí pole chrar
Kedže MCU zatiaľ nevie veštiť tak musí existovať nejaký prísne logický spôsob ako určiť kde začína to tvoje "Tohlemenezajima"
Potom môžeš nasadiť predošlú radu. Ak sa prenáša v ASCII tak takým znakom býva zvyčajne znak CR, alebo LF, alebo oba. Ak sa prenášajú binárne data tak sa to robí všelijako. Napríklad unikátnou hlavičkou, špeciálnym bitom (9 bitový prenos namiesto 8). Medzerou vo vysielaní, prípadne štarovacím bitom špeciálnej dĺžky. Možností je veľa. CR je najjednoduchší.
Potom môžeš nasadiť predošlú radu. Ak sa prenáša v ASCII tak takým znakom býva zvyčajne znak CR, alebo LF, alebo oba. Ak sa prenášajú binárne data tak sa to robí všelijako. Napríklad unikátnou hlavičkou, špeciálnym bitom (9 bitový prenos namiesto 8). Medzerou vo vysielaní, prípadne štarovacím bitom špeciálnej dĺžky. Možností je veľa. CR je najjednoduchší.
Re: Oříznutí pole chrar
Pozrel som si projekt ktorý robíš. Kedže ide o prácu s terminálom a teda vo formáte ASCII tak ako oddelovač asi používaš znak ENTER teda CR v ASCII.
Ak už máš znaky riadka uloženého v poli a nezaujímajú ťa nejaké znaky tak ich preskočíš jednoduchým pričítaním počtu znakov ktoré chceš preskočiť. A to aj v prípade že k poľu pristupuješ cez index, alebo aj ukazateľ.
Ak už máš znaky riadka uloženého v poli a nezaujímajú ťa nejaké znaky tak ich preskočíš jednoduchým pričítaním počtu znakov ktoré chceš preskočiť. A to aj v prípade že k poľu pristupuješ cez index, alebo aj ukazateľ.
Kód: Vybrat vše
char buffer[128];
char c;
char *p; //ukazatel
int i; //index
i=0;
c=buffer[i]; //prvy znak pola
i+=10;
c=buffer[i]; //desiaty znak pola
p=buffer;
c=*p; //prvy znak pola
p+=10;
c=*p; //desiaty znak pola
Re: Oříznutí pole chrar
Díky za rady, asi to udělam podle poslední rady, zkopíruju si to do novího pole posunutý o délku těch nezajímavých dat.
Díky
PS: Ono ty nezajímavý data mají samozřejmě svůj účel, je to v podstatě hlavička která říká co je dál. Ta se zpracovává jinde ale protože je na začátku a má pevnou délku tak to není problém.
Díky
PS: Ono ty nezajímavý data mají samozřejmě svůj účel, je to v podstatě hlavička která říká co je dál. Ta se zpracovává jinde ale protože je na začátku a má pevnou délku tak to není problém.
https://arze.cz - ARduino Zapojení Elektronika
Re: Oříznutí pole chrar
Nie celkom mi je jasný zmysel takéhoto počinu. Čo získaš tým že niečo čo máš už v poli prekopíruješ niekam inam? Zase to bude len pole na nejakej adrese. To si to môžeš rovno posunúť v tom pôvodnom poli pomocou memmove, ale to je úplne zbytočné. Zvyčajne sa data preliezajú tak že sa na ne len ukazuje ukazateľmi, alebo indexami. (Ukazatele sú efektívnejšie).
Re: Oříznutí pole chrar
Já jenom, takovej hloupý dotaz ... ono, když se někde jinde zpracuje ta hlavička, aby se vědělo co dál ... nemůže se tam i zpracovat zbytek onoho datagramu ? když už se ví co dál, proč zbytek dat rovnou nenaskládat někam do paměti, kde si je vyzvednu později ?
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 46 hostů