PDA

Pogledaj cijelu verziju : Rad s fileovima



DragonSoul
03-03-2008, 21:23
Jel me može netko uputiti na primjer koji će mi pokazati kako raditi sa fileovima. Želim u jedan file spremiti nekoliko varijabli, a da ih kasnije opet mogu učitati u program kad mi budu potrebne(pri ponovnom paljenju programa). Sorry ako je već bilo o tome, ali nigdje ništa ne nađem o tome, a treba mi primjer, jer ja iz teorije teško mogu nešto sklepati.

Iron Storm
03-03-2008, 21:31
Koji jezik?

Luka
03-03-2008, 21:43
nisam siguran zanima li te samo spremanju datoteke (rad s datotekama) ili kako u string zapisati i iz stringa "pročitati" varijable ..

ako je ovo drugo, onda je najjednostavnije sve varijable pretvoriti u string, i zapisati ih u obliku "v1 v2 v3"; za pročitati to napraviš neku petlju koja će prelomiti takav string u polje (s elementima v1,v2,v3)

možeš koristiti i xml, ali ako imaš nekoliko jednostavnih podataka, nema potrebe za njim

Tracer
04-03-2008, 11:55
U C++ je to moguće na dva načina, od kojih svaki ima dva pristupa. Općenito, pristupi mogu biti tekstualni (slijedni, formatirani) ili binarni (direktni, neformatirani). Pošto vjerujem da tebe zanima obična obrada teksta onda je to ovaj prvi pristup.

Evo kako možeš ispisati sadržaj neke datoteke upotrebom C funkcija:



#include <stdio.h>
#include <stdlib.h>

int main()
{
FILE* f;
char c, dat[256];

printf("Unesite ime datoteke: ");
scanf("%s", dat);

if((f = fopen(dat, "r"))==NULL){
printf("Datoteka se ne može otvoriti za citanje!");
return -1;
}
while (!(feof(f))) { // sve dok nije kraj datoteke
fscanf(f, "%c", &c); // citaj znak po znak
printf("%c", c); // ispisi ucitani znak
}
fclose(f);
return 0;
}

Gotovo isto je za upis u datoteku, samo što umjesto funkcije fscanf koristiš fprintf.

Ako već hoćeš koristiti baš C++ tada je malo kompliciranije jer se moraš služiti tokovima i klasama. Primjerice:


int main()
{
float BROJ = 3.6;

int mode = ios::trunc | ios::app; //nacin otvaranja
fstream ulaz("Tekst.txt", mode);
ulaz << "Znakovni niz " << BROJ << endl << 'c';
return 0;
}

Ovdje koristiš fstream tok za pisanje u datoteku. Prvo se kreira instanca, pa operatorima << vršiš upis u datoteku. Slično je i za čitanje iz datoteke:


#include <iostream.h>
#include <fstream.h>

int main()
{
float a, b;

ifstream citaj("Tekst.txt");
citaj >> a;
citaj >> b;
cout << a << "+" << b << "=" << (a+b);
return 0;
}


...samo što se ovdje koristi ifstream tok i operatori >>. U svakom slučaju za početnika je jednostavniji i brži način sa C funkcijama.

DragonSoul
04-03-2008, 14:20
E, puno hvala! Da, radim u C++u. U biti, moja mala tajna je da želim napraviti console-based RPG :D Ono, čisto da vidim koliko znam i da naučim nešto novo. Neće biti grafike, samo čisti gameplay. Trenutno pravim engine (lol, čudo je to reči), pa sam se naljutio što nisam znao raditi sa stringovima (dok nisam googleao C++ Strings) pa sam otišao raditi meni igre :rotfl: I tamo sam vidio da ne znam napraviti load/save. Tak da ću najvjerovatnije često otvarat topice tipa "Kako napraviti inventory" (o moj Bože, sad mi je sinuo da ne znam ni to), ali ono, po potrebi i ako ne nađem riješenje na googleu. Mislim, dosta mi je svih makera, creatora, game magica i šta ja znam šta sve ne, gdje se pritisnu 2-3 gumbića i svaka budala kažem "napravio sam igru".
E da, dali je pametno taj sistem koristiti za save fileove? Mislim, cheatat će se moći, ali baš me briga za to, tko želi igrati igrati će.

Burek_fr0m_SPACE
04-03-2008, 18:23
E da, dali je pametno taj sistem koristiti za save fileove? Mislim, cheatat će se moći, ali baš me briga za to, tko želi igrati igrati će.
Mah, cheatanje je zadnje oko čega bi se sada trebao brinuti. Slobodno koristi ovakav sistem - biće ti dobro za početak a i takav pristup je sasvim dovoljan za tvoj projekat. I da, drago mi je što je još neko odustao od game makera i uzeo praviti tekstualni RPG - to je moja vječita preporuča za početke game developmenta =)

DragonSoul
04-03-2008, 19:42
Eh, uvijek se još ne mogu naviknuti na to da pravim engine :rotfl: Ono, mislim svatko danas zna upaliti maker pritisnuti "Make Game" i eto ga na. Ja želim nešto naučiti. Hoće li netko cheatati sasvim mi je svejedno. U biti imam jedino vidljivo meni(koji može loadati save koji ne postoji, about i exit), a imam 244 linija koda (to meni puno zvuči) :rotfl: A da sad ne otvaram novu temu:
Jeli postoji razlika da svoje deklaracije klasa i često korištenih funkcija spremim kao .h, .hpp ili .cpp? Do sada imam samo 4 filea, 3 ccpa(Main, MainMenu, Load_Save) i jedan class header. Sad ne želim pokusitari sa ovim, jer radi, ali jeli postoji razlika?

Tracer
04-03-2008, 19:57
E, puno hvala! Da, radim u C++u. U biti, moja mala tajna je da želim napraviti console-based RPG :D Ono, čisto da vidim koliko znam i da naučim nešto novo. Neće biti grafike, samo čisti gameplay. Trenutno pravim engine (lol, čudo je to reči), pa sam se naljutio što nisam znao raditi sa stringovima (dok nisam googleao C++ Strings) pa sam otišao raditi meni igre :rotfl: I tamo sam vidio da ne znam napraviti load/save. Tak da ću najvjerovatnije često otvarat topice tipa "Kako napraviti inventory" (o moj Bože, sad mi je sinuo da ne znam ni to), ali ono, po potrebi i ako ne nađem riješenje na googleu. Mislim, dosta mi je svih makera, creatora, game magica i šta ja znam šta sve ne, gdje se pritisnu 2-3 gumbića i svaka budala kažem "napravio sam igru".
E da, dali je pametno taj sistem koristiti za save fileove? Mislim, cheatat će se moći, ali baš me briga za to, tko želi igrati igrati će.

Ja sam si obično za projekte radio INI datoteke gdje bi pisao kodirane podatke, a u zadnje vrijeme najviše koristim windows registry. Program napravi ključ u registry-u i unutra spremi sve potrebne varijable koje kasnije bez problema pročita i iskoristi.

DragonSoul
04-03-2008, 20:37
Hm..... vidiš i to je dobra ideja, ali meni treba kao savegame. Sada, ne vrijedi mi savegame spremati u registry, jer u slučaju da će netko ovo moje igrati i mora rušiti winse gubi napredak, a ovako ima jedan file od kojeg napravi backup i gotovo. I ne volim praviti programe koji diraju registy, da još AV prepozna moj nevini projekt kao virus :cry:

Plexihack
05-03-2008, 17:44
Tracer :pray:

Odlično,a evo i sa službene stranice:

http://www.cplusplus.com/doc/tutorial/files.html