Struktura u binarnu datoteku

poruka: 7
|
čitano: 2.033
|
moderatori: XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
14 godina
neaktivan
offline
Struktura u binarnu datoteku

Znači, trebam u konzolu upisivati podatke u strukturu
sa fwrite ih upisivati u file, i onda čitati iz fajla u strukturu
a iz stukture ispisivazi u konzolu.

Evo mog koda...

http://pastebin.com/aUccmqGQ

nešto vjerojatno ne valja sa scanfom ili fwriteom... jer mi čudne stvari izlaze...

još bi bilo dobro da za strukturu alociram memorije za niz od 'n' struktura sa malloc/calloc, ali ne znam kako bi to za strukturu baš....

Ima koga voljnog pomoći mi? :D

Hvala.

 
0 0 hvala 0
15 godina
neaktivan
offline
Struktura u binarnu datoteku

Što ti točno ne ispisuje dobro?

 

Pod treći argument fwritea navodiš n, a trebalo bi biti 1. Treći argument treba govoriti koliko elemenata veličine size treba zapisati, a pošto zapisuješ samo jednu osobu, trebalo bi biti 1. Naravno, to (s 'n') bi bilo ispravno ukoliko zapisuješ niz 'osoba', a funkciji predaješ pokazivač na prvi element niza.

 

A niz struktura bi alocirao ovako:

 

#include <stdio.h>

#include <stdlib.h> //za malloc i free

 

typedef struct {

....

} osoba;

 

int main() {

  int n;

  osoba *pok = NULL;

  scanf("%d", &n);

  pok = (osoba*) malloc(n*sizeof(osoba)); //alociramo memoriju s malloc

 

  /* onda bi elementu na indeksu i pristupao s pok[i].placa, pok[i].ime itd. */

 

  free(pok); //oslobađamo alociranu memoriju s free

  return 0;

}

Slavonija u ♥ | http://crocraft.com - hrvatska Minecraft zajednica | http://www.soma.fm/
Poruka je uređivana zadnji put sri 23.1.2013 21:00 (nidjo123).
Moj PC  
0 0 hvala 0
14 godina
neaktivan
offline
Re: Struktura u binarnu datoteku

a jaooo... nije čudo što mi nije radilo s malloc kad nisam stavio stdlib.h

probam pa odgovorim.

14 godina
neaktivan
offline
Re: Struktura u binarnu datoteku

hmm, dobro je samo kad imam jedan unos....  ali kad stavim 2 ili više, onda pročita dobro prvu strukturu, pa onda dalje nekakve gluposti...
np. sad mi ispisao nakon prve strukture C:program files/common files... tako nešto :O

ajde, molim te, pogledaj kod :D.

http://pastebin.com/hnzukreR

15 godina
neaktivan
offline
Struktura u binarnu datoteku

 

Probaj prije petlje ispisa napisat fread(o1, sizeof(osoba), n, fpla) i onda samo prođi nizom i ispiši.

Slavonija u ♥ | http://crocraft.com - hrvatska Minecraft zajednica | http://www.soma.fm/
Poruka je uređivana zadnji put sri 23.1.2013 23:57 (nidjo123).
Moj PC  
0 0 hvala 0
14 godina
neaktivan
offline
Re: Struktura u binarnu datoteku

radi tako :D. Hvala puno :D.

Možeš mi samo reći još nešto. Zadnji član stringa je običan char. 1 znak. I sad šta treba dodati u kod da kad učitam taj char i pritisnem enter, da me ne traži više ništa. Uvijek moram dodati još jedan znak koji on pospremi u buffer i nigdje ne završi.

Probao sam sa getch() i getchar(), ali bez uspjeha... ne znam kako točno trebam to napisati ni gdje.

15 godina
neaktivan
offline
Struktura u binarnu datoteku

Problem je u ovoj liniji:

 

scanf("%30[^,], %50[^,], %ld, %f, %c ", &o.ime,
       &o.prezime, &o.matbr, &o.placa, &o.oznaka);

 

Scanf tu očekuje prazan znak odn. razmak nakon unesenih podataka zato što si u stringu stavio razmak prije posljednjih navodnika.

 

Dakle, trebala bi izgledati ovako ako ne želiš razmak svaki put:

 

scanf("%30[^,], %50[^,], %ld, %f, %c", &o.ime,
       &o.prezime, &o.matbr, &o.placa, &o.oznaka);

Slavonija u ♥ | http://crocraft.com - hrvatska Minecraft zajednica | http://www.soma.fm/
Poruka je uređivana zadnji put čet 24.1.2013 14:43 (nidjo123).
Moj PC  
0 0 hvala 0
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice