Stránka 1 z 1
Oříznutí pole chrar
Napsal: 20 pro 2021, 21:22
od Diego
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
Re: Oříznutí pole chrar
Napsal: 20 pro 2021, 21:27
od jankop
Když nezajímavá data mají pevnou délku, tak prostě začni ukládat do pole až platná data.
Re: Oříznutí pole chrar
Napsal: 20 pro 2021, 22:43
od peterple
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ší.
Re: Oříznutí pole chrar
Napsal: 20 pro 2021, 23:49
od peterple
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ľ.
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
Napsal: 21 pro 2021, 05:40
od Diego
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.

Re: Oříznutí pole chrar
Napsal: 21 pro 2021, 10:42
od peterple
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
Napsal: 21 pro 2021, 19:09
od kiRRow
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 ?