Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pristup slogovima DBF datoteka iz C jezika

[es] :: C/C++ programiranje :: Pristup slogovima DBF datoteka iz C jezika

[ Pregleda: 3774 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

brankec
Bosanski Brod

Član broj: 140157
Poruke: 161
*.teol.net.



Profil

icon Pristup slogovima DBF datoteka iz C jezika15.01.2008. u 19:32 - pre 198 meseci
Radim u C jeziku, i naravno znam da pri radu sa datotekama EOF znaci kraj datoteke, '\n' znaci ENTER ili novi red. I ovo sve fino funkcionise u tekstualnim datotekama (.txt, .dat, itd).
Ali ono sto ne znam i zasto mi treba velika pomoc su fajlovi sa .dbf ekstenzijom. Zanima me kako procitati samo jedno odredjeno polje. Odnosno, da budem jos precizniji, zanima me kako se oznacava kraj jednog polja (i pocetak drugog). (Pretpostavljam da se kraj reda zavrsava sa '\n'). Pr:

IME PREZIME GODINA
zoran markovic 1998
milan 1965
predrag kravic 1966
vitomir bacina 1984

E sada kako bi izgledao program koji bi ucitao ove podatke i recimo dodao prezime koje fali kod milana.
 
Odgovor na temu

laki_srt
laki_srt
ucenik

Član broj: 166987
Poruke: 183
*.tippnet.co.yu.



Profil

icon Re: Pristup slogovima DBF datoteka iz C jezika15.01.2008. u 21:48 - pre 198 meseci
recimo ovako nesto:
Code:

char ime[25][20],prezime[25][20];//nizovi u koje ce da smesti ime i prezime,znaci max 25 imena duzine 19 posto 20tomesto zauzima 0-ti karakter '\0'
int godina[25],novi_red;
FILE*in;
in=fopen("podatci.dbf","r");
for(i=0;i<n;i++)
      fscanf(in,"%s%s%d%d",&ime[i],&prezime[i],&godina[i],&novi_red);//ovo novi_red ti je potrebno zbog toga sto se posle broja 1998 nalazi nevidljivi karakter \n kojeg ce kad se u for petlji poveca i kompajler smestiti u niz ime


zoran markovic 1998
kako mislis dodati prezime,da korisnik unese prezime i da se zatim to prezime sacuva u datoteci posle milan i pre 1965,ili da program sam ubaci neko prezime?
Napisao sam ti kako citati podatke iz fajla,ako ti je potrebno da ti neko napise program moras detaljnije opisati sta sve treba da radi program


EDIT: X Files : Molim Vas da zbog preglednosti, kod upisujete između tag-ova predviđenih za to:

[code]
int main ( int argc, char *argv[] )
{
// ...
return 0;
}
[/code]

(tim pre što se i u indeksu [ i ] gubi i postaje italic)

[Ovu poruku je menjao X Files dana 16.01.2008. u 08:48 GMT+1]

[Ovu poruku je menjao X Files dana 16.01.2008. u 08:48 GMT+1]
 
Odgovor na temu

laki_srt
laki_srt
ucenik

Član broj: 166987
Poruke: 183
*.tippnet.co.yu.



Profil

icon Re: Pristup slogovima DBF datoteka iz C jezika15.01.2008. u 22:25 - pre 198 meseci
Izgleda da nisam dobro procitao pitanje i vidim da je dbf u stvari baza podataka,tako da moj odgovor mislim da ne vazi za baze podataka,al nisam siguran. Ali par funkcija da objasnim mozda ti pomogne:
funkcija za citanje stringa iz fajla: fscanf cita string do razmaka,a funkcija fgets cita string do znaka za novi red,ovo isto vazi i kada korisnik unosi string samo sto su onda funkcije samo scanf i gets.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.tekostolac.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Pristup slogovima DBF datoteka iz C jezika16.01.2008. u 07:35 - pre 198 meseci
brankec,

Promenio sam naslov ove teme (stari: "Kraj polja u .dbf ekstenziji") jer ne odgovara najsrećnije problemu koji je opisan.

Tvoje pretpostavke o DBF formatu su pogrešne.

Kao što znaš, DBF datoteke su tabele dBASE baze podataka. Iako primitivne, te datoteke nisu baš toliko proste kao posebo formatizovani ASCII (TXT) zapis koji si pomenuo i dao primer za njega. Recimo, DBF imaju koncep logički obrisanih slogova (koji su zapravo i dalje fizički bazi), imaju koncept MEMO podataka koji nisu u istom 'redu' kao i ostali pripadajući elementi sloga, imaju i svoje verzije (koje menjaju pravila) i sl.

Drugim rečima potrebno je poznavati mnogo više 'pravila' pre nego što se upustiš u neki pristup (unos, ispravke, brisanje) njima. Ovo znači da je problem veći od dobijanja odgovora na tvoje prvobitno pitanje "Kraj polja u .dbf ekstenziji".

Postoje jezici posebno projektovani za upravljanje bazama zasnovanim na DBF fajlovima, kao što su Clipper (ako se ne varam, napisan je na C-u) i FoxPro koji znaju kako da sve to 'razumeju' do detalja i rade s tim formatom. U novije vreme to mogu Borland C++ Builder i Delphi.

C jezik nema ugrađenu podršku za direktan pristup slogovima i pojedinačnim poljima DBF datoteka.

Da li to znači da se iz C jezika ne može pristupiti DBF datotekama? Naravno da ne znači, ali je potrebno zaobilazno rešenje:

1) proučiti format zapisa podataka u DBF datotekama i imlementirati ono što ti treba na osnovu pravila koja su ustanovljena

O formatu raznih ekstenzija (pa i DBF) možeš saznati ovde:
http://www.wotsit.org/
(a tebi treba sekcija: Spreadsheet/Database, dBASE .DBF File Structure)

Zkačiću ti fajl u Attachmentu

2) Pronaći gotove biblioteke u kojima je neko (pametan) sve to imlementirao za tebe, a ti ih samo uključiš u projekat (#include) i koristiš na osnovu ponuđenog interfejsa (funkcija).

(na žalost ne znam ni jednu takvu biblioteku, ali sam siguran da postoje)
Prikačeni fajlovi
 
Odgovor na temu

brankec
Bosanski Brod

Član broj: 140157
Poruke: 161
*.teol.net.



Profil

icon Re: Pristup slogovima DBF datoteka iz C jezika16.01.2008. u 17:29 - pre 198 meseci
Hvala ti na pojasnjenju.
Evo kako sam ja to zamislio (a ti mi reci jel to uopste tako moze):
Definisem strukturu, kao na primer radnici.ime, radnici.prezime, radnici.godina, itd. I sada otvorim .DBF bazu radnici (primer) i izvlacim podatke iz slogova i "punim" strukturu.
Nemora biti struktura, moze biti obicna string promjenjiva (ime[20], prezime[20] itd.).
Kad to zavrsim mogu lako obradjivati podatke (sortirati, brisati, dodavati, menjati itd.).
Da li sam to sve dobro zamislio, a ako nisam reci(te) kako.
 
Odgovor na temu

[es] :: C/C++ programiranje :: Pristup slogovima DBF datoteka iz C jezika

[ Pregleda: 3774 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.