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.
- +/- sve poruke
- ravni prikaz
- starije poruke gore
Š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;
}
a jaooo... nije čudo što mi nije radilo s malloc kad nisam stavio stdlib.h
probam pa odgovorim.
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
Probaj prije petlje ispisa napisat fread(o1, sizeof(osoba), n, fpla) i onda samo prođi nizom i ispiši.

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.
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);