View Full Version : [c] lettura da file
ho il seguente problema.. il programma mi scrive tranquillamente sul file però quando vado a fare la lettura il programma mi crasha tornando a windows.. probabilmente ho errato qualcosa nella funzione di lettura, ve la posto qua di seguito:
FILE *pass;
char ambulanze[20];
pass=fopen("ambulanze.dat","r");
if (pass==NULL) printf("impossibile aprire il file o file non presente\n\n");
else
{ fseek(pf,0,0);
fread(ambulanza,20,1,pf);
printf("%s\n",&ambulanza);
}
Utilizzo il dev-c++ per la compilazione.. tutto sotto windows, perfavore aiutatemi.. grazie!!
pf dove lo definisci ? Devi metterci pass invece di pf...
giusto.. che idiota.. ho fatto confusione con l'altra parte del programma..:doh:
se io dovessi fare un ciclo di lettura di piu file incrementando via via l'fseek come potrei fargli capire quando fermarsi perchè i dati nel file sono finiti?
Grazie ancora..
L'fseek non lo devi incrementare, il file va avanti ad ogni lettura.
Il file è terminato quando feof ti ritorna true (l'ultima lettura fatta non è valida) oppure è parzialmente valida in caso di fread con il terzo parametro > di 1.
http://www.cplusplus.com/reference/clibrary/cstdio/fread.html
si xò nella funzione che ho scritto prima con le modifiche di pf in pass mi legge solo il primo valore del file.. come devo fare per far apparire a video una lista di tutti i valori presenti?
grazie
fseek non ci vuole, fin quando vuoi muoverti sequenzialmente nel file ci pensa già da solo ad avanzare.
devi mettere la fread in un do while con feof nel controllo.
correggimi se erro:
do
{
fread(ambulanza,20,1,pass);
printf("%s\n",&ambulanza);
}while(!feof(pass));
però in questo modo continua a leggermi solo il primo valore del file o almeno mi stampa a video solo quello eppure controllando all'interno del file con un editor di testo mi risultano altri 4 valori..:muro:
Prima di tutto sbagli a stampare, devi togliere la & per la printf.
si scusami quello lo avevo già fatto.. solo che l'errore rimane..
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.