PDA

Visualizza la versione completa : [C] fwrite && fread


{-_-}
20-01-2008, 20:59
sul mio manuale c'è scritto che le due funzioni ritornano il numero di elementi scritti/letti e in caso di errore è necesario usare feof && ferror.

come posso usarle per capire il tipo id errore? sul manuale non c'è scritto niente :(

oregon
20-01-2008, 21:04
Il tipo di errore? In che senso?

{-_-}
20-01-2008, 21:14
in pratica sto creando un file con delle anagrafiche che vado a memorizzare e poi creo un indice, che ordino alfabeticamente, ma non è questo il problema

l'indice viene ordinato volta per volta, facendo parecchi strcmp fino a che non trovo la posizione ideale per l'inserimento.

il punto è che se sono al primo inserimento in assoluto nell'indice , mi da errore.

infatti io faccio una fread della prima chiave dell'indice , solo che la prima volta che uso il programma la fread non va a buon fine, perchè l'indice è vuoto e il programma crasha.

quindi mi serve qlc per capire se la fread ha letto o no l'elemento richiesto.

pensavo di usare ferror ma non so come si utilizza e non ho trovato materiale.

scusate se mi spiego a rate

:)

oregon
20-01-2008, 21:19
if(fread(...)==0) allora c'e' stato un errore ...

{-_-}
20-01-2008, 21:24
avevo anch'io fatto così , ma mi crashava ancora e penvaso allora di aver sbagliato.

allora ho sbagliato a individuare l'errore.


grazie

oregon
20-01-2008, 21:25
Sì .... ma il problema potrebbe essere nel buffer che passi alla fread ... forse e' troppo piccolo ... bisognerebbe (come sempre) dare un'occhiata al codice ...

{-_-}
20-01-2008, 21:37
in questo caso stavo tentando di agigustare il codice di un mio amico, purtroppo non posso postarlo.

me la caverò sbattendoci la testa.

grazie oregon

ciao

{-_-}
20-01-2008, 21:57
errore trovato.

in pratica nel codice c'era scritto
(pseudocode)

inserisic anagrafica in dat.dat

apri l'indice ind ind.dat

leggi il primo elemento dell'inidce e continua finchè nnn hai trovato la posizione

il problema era che se l'indice non esisteva , lo creava ma andava cmq a ricerca della posizione.
ovviamente andando in crash

ho agigunto:

if esiste-->cerca

else->inserisci nell'indice e basta


così funziona

ciao

Loading