Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Deklarace pole stringů

Ahoj, mám dotaz...

je možné deklarovat pole proměnných typu String, pokud dopředu nevím kolik toho bude? Např:

String test[] = {"","","","",""};

mi udělá pole stringů test[0] až test[4].

String test[]="";

nebo

String test[];

udělá co?

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Muzes deklarovat pole stringu, aniz bys znal velikost pole, ale pak budes muset to pole alokovat pod…
gilhad 10.01.2021 22:27
gilhad
Jo, to se mi stalo, když jsem deklaroval jeden ze stringů jako array o předem neznámé velikosti, pak…
mia 10.01.2021 23:53
mia
A co ti brání si říct, že třeba 25 měst max. by mohlo stačit, naalokovat si pole na 25 měst a vypiso…
Jan Fiala 11.01.2021 06:54
Jan Fiala
Jo, to by šlo. Tak to udělám.
mia 11.01.2021 07:08
mia
Mimochodem seznam měst se hodí nahrát do EEPROM, já to tak mám v GPS (několik měst a jejich souřadni… poslední
ml1 11.01.2021 14:18
ml1

Muzes deklarovat pole stringu, aniz bys znal velikost pole, ale pak budes muset to pole alokovat podle potreby a do te promenne podstrcit a sampmzrejme si hlidat, abys neprekrocil aktualni meze.

Nebude ti spravne fungovat, kdyz ho deklarujes bez rozsahu a pak do nej budes pridavat. (Jako asi se chvili bude zdat, ze to funguje, ale pak nakjednou zjistis, ze se ti divne meni nejruznejsi promenne a nic nefunguje jak ma, protoze se ti nehlidaji meze a prepisujes pamet, co ti nepatri)

Obecne bych se spis klonil k tomu udelat to ciste prez nejakou dynamickou strukturu typu seznam, nebo B-tree, nebo cokoli jineho potrebujes / lepe se hodi pro tvuj ucel.

A u Arduina (a podobnych mrnavosti, co maji malo RAM) bych byl s dynamickymi alokacemi na halde docela opatrny, protoze pameti je malo a s trochou smuly ji muzes snadno fragmentovat (a nasledne vypotrebovat), nez se nadejes - dostanes se do stavu, ze alokovaneho nemas moc, ale presto nejde nic alokovat, protoze neni kde, i kdyz by ti teoreticky melo zbyvat jeste dost volne pameti. Ale prakticky nezbyva, protoze neni v dost velkem souvislem kuse.

A hratky se String (jakozto objektem, co si sam alokuje dynamicky pamet) se ve vetsim muzou ukazat zdrojem problemu. Ja davam prednost char * kde to jen jde a organizuju si to sam. Stejne jako vystupy delam radeji radou vypisu jednotlivych promennych, nez jejich sestavenim do Stringu a naslednym jedinym vypisem.
---
A ano Arduino je neco jako C++/G++ s knihovnou Wiring a radou knihoven casto dost pochybne kvality. Ale muzes tam pouzivat vetsinu konstrukci toho jazyka (IMHO skoro vsechny) a radu standardnich knihovnich funkci (ty urcite ne vsechny, protoze spousta toho tam neni kvuli velikosti).

Jo, to se mi stalo, když jsem deklaroval jeden ze stringů jako array o předem neznámé velikosti, pak se mi do něj začalo cpát něco, co jsem nepředpokládal (což jsem poznal tak, že jsem si to vypsal přes serial). Takže mi nezbylo, než deklarovat na přesný počet prvků a začalo to chodit.
Hraju si s TTGO T-display a mám na to napsanou jednoduchou meteostanici, která si tahá data přes wifi z openweathermap.org. Chtěl jsem tam přidat možnost, aby si to v cyklu načetlo více měst, ale zas jsem nechtěl, abych musel s každou změnou kódu okopávat hafo proměnnejch... no holt budu muset, jinak to nejde.

Mimochodem seznam měst se hodí nahrát do EEPROM, já to tak mám v GPS (několik měst a jejich souřadnice), který provozuju už léta. Zůstalo teda u provizorních 4 měst (počítal jsem 0-30 na což mám dimenzované pole (je to pole struktur, struktura se skládá z názvu města a jeho souřadnic a možná tam je ještě něco), možná jsem tam i nějaká další města nahrál, program ale prostě používá jen 4 první položky a asi to tak zůstane navěky), ono plány vždy jsou velkorysé, realizace bývá omezená časem. Tato vznikla doslova pár hodin před dovolenou před léty a od té doby jsem se v tom nechtěl šťourat (a mezitím jsem vymyslel dvě nové verze hw, takže s tou starou se už asi těžko budu zabývat). Takže dodnes se mi ukazuje vzdálenost domu, do místa dovolené a do Wien Hbf a Roma Terminni (to byly přestupní uzly). Kromě vzdálenosti domu, jsou to teda zbytečné informace, zase tak často nepotřebuju vědět jak daleko jsem od Vídně nebo od Říma.
Když to takl vezmu, potřeboval bych někoho, kdo mé nápady na sw zrealizuje, já většinou zůstanu jen u základu (hw a opravdu nejnutnější sw nejnižší úrovně) a o moc víc se mi dělat nechce.

Zpět do poradny Odpovědět na původní otázku Nahoru