Práce se soubory – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Práce se soubory – C / C++ – Fórum – Programujte.comPráce se soubory – C / C++ – Fórum – Programujte.com

 

Mára
~ Anonymní uživatel
31 příspěvků
21. 12. 2015   #1
-
0
-

Zdravím forum potřeboval bych radu.Učím se teď pracovat se soubory a chtěl jsem si udělat malý program ,který by načítal z csv souboru se středníky do pole.Chtěl bych aby  každý řetězec co je za středníkem, byl uložen na nasledujícím indexu ale bohužel se mi to vůbec nedaří a vždy načtu všechny záznamy do 1 indexu.

Poradil by někdo ? díky.

Nahlásit jako SPAM
IP: 95.82.145.–
Matěj Andrle+1
Grafoman
21. 12. 2015   #2
-
0
-

#1 Mára
Indexem míníš pointer? Jednoduché - do ** přistupuj proměnnou, kteroužto budeš incrementovat (navyšovat o 1) - viz alokace paměti. Jinak vždy mne dojímá, jak lidé nejsou schopni vyložit své problémy. Proč například sem taháš soubory? Toto souvisí s ukazateli - proměnnými, referencemi, ... Namísto zdlouhavého vysvětlování jsi se mohl rovnou poptat na index/pointer. A pokud se to týká souboru, tak tam se orientuješ pomocí seek.

Nahlásit jako SPAM
IP: 31.30.56.–
KIIV
~ Moderátor
+43
God of flame
21. 12. 2015   #3
-
0
-

A kod nebude?

Nahlásit jako SPAM
IP: 93.91.152.–
Program vždy dělá to co naprogramujete, ne to co chcete...
21. 12. 2015   #4
-
0
-

#3 KIIV
pokud mu ho nenapíšeš, tak nebude.   

hu

Nahlásit jako SPAM
IP: 193.86.81.–
21. 12. 2015   #5
-
0
-

Jestli by to bylo v C++, tak práci usnadní std::string a std::vector

hu

edit: v C by se na to dalo jít např takto:
1. alokuji jednorozměrné pole char a načtu do něj celý soubor. Znak EOF nahradím znakem s hodnotou 0x00. Ze souboru se stal "maxiřetězec"
2. Alokuji pole ukazatelů na char.
3. pomocí strtok projdu "maxiřetězec", funkce nahradí každý středník znakem s hodnotou 0x00 a vrátí ukazatel na takto vzniklý řetězec
4. ukazatel vrácený funkcí strtok uložím do pole ukazatelů. Pokud je toto pole malé, realokuji ho.
Řetězce budou poskládané za sebou v paměti, to může být výhoda při jejich dalším zpracování. Nevýhodou je zpracování souboru ve dvou cyklech - načtení a rozdělení na řetězce.

Druhý postup je číst soubor po znacích. V takovém případě potřebuješ před započetím čtení každého řetězce alokovat pro něj paměť a ukazatel uložit do pole. Paměť pro řetězec musíš alokovat a realokovat podle velikosti řetězce, stejně tak pole musíš alokovat a realokovat podle počtu řetězců. V  tomto případě mohou být řetězce roztroušené různě po paměti. Výhodou je pro změnu zpracování v jednom cyklu.

hu

Nahlásit jako SPAM
IP: 193.86.81.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 27 hostů

Podobná vlákna

Práce se soubory — založil Jakub

Práce se soubory — založil polonium

Práce se soubory — založil Polarski

Práce se soubory — založil Mike.Jt

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý