Entra

View Full Version : [C] Lettura file


salvodel
10-01-2008, 17:09
Ciao a tutti, ho un problema nel aprire un file. Non credo che ci siano errori nella funzione perche in un'altra funzione faccio la stessa cosa ma non mi da problemi. Il fatto è che quando apro il filename1 va avanti all'infinito. Il file è un .dat ma non vorrei che avendolo modificato con notepad di win abbiamo eliminato "qualcosa"?
La funzione è la seguente:
int legge()
{
FILE *file1, *file2;
int i=0;
int t;i;
double p[200];

if((file1=fopen(filename1,"r"))==NULL)
printf("Impossibile aprire il file");
else
{
i=0;
while(fscanf(file_weight1,"%LE",&p[i]))
{
printf(".");
i++;
if(i==500)
break;
}
}
}
Grazie a tutti

yorkeiser
10-01-2008, 17:38
Prova a sostituire questa:

while(fscanf(file_weight1,"%LE",&p[i]))

con questa

while(fscanf(file1,"%LE",&p[i]))

Inoltre dichiari un array p[200], ma poi fai il break per i==500; in c conviene stare attenti ai limiti degli array dal momento che il linguaggio non fa controlli sui limiti degli array (ergo teoricamente potresti anche leggere/scrivere anche la cella p[3000]), ma il comportamento in quel caso è imprevedibile.

salvodel
11-01-2008, 15:41
Prova a sostituire questa:

while(fscanf(file_weight1,"%LE",&p[i]))

con questa

while(fscanf(file1,"%LE",&p[i]))

Inoltre dichiari un array p[200], ma poi fai il break per i==500; in c conviene stare attenti ai limiti degli array dal momento che il linguaggio non fa controlli sui limiti degli array (ergo teoricamente potresti anche leggere/scrivere anche la cella p[3000]), ma il comportamento in quel caso è imprevedibile.
Non riesco a capire. Quell'errore l'ho fatto nello sfoltire il codice da inserire nel forum ma non è presente nel listato. Inoltre il brea a 500 lo faccio solo perche altrimenti la funzione non smette di leggere il file. L'altra funzione simile non ha il break perche appena finisce di leggere il file esce dal ciclo while.
if((fweight1=fopen(filenamew1,"r"))==NULL)
printf("Impossibile aprire il file pesi_1.dat");
else
{
printf("Inizializzazione pesi!!\n");
i=0;
printf("Primo strato.\n");
while(fscanf(fweight1,"%LE",&p[i]))
i++;
}

salvodel
11-01-2008, 15:54
if((fweight1=fopen(filenamew1,"r"))==NULL)
printf("Impossibile aprire il file pesi_1.dat");
else
{
printf("Inizializzazione pesi!!\n");
i=0;
printf("Primo strato.\n");
while(fscanf(fweight1,"%LE",&p[i]))
i++;
}

Questo funziona: if((fweight1=fopen(filenamew1,"r"))==NULL)
printf("\nImpossibile aprire il file");
else
{
printf("\nDati letti:\n");
i=0;
while(fscanf(fweight1,"%LE",&p[i])>0)
{
printf(".");
i++;
}
}
Perchè?
Grazie