PDA

Visualizza la versione completa : [C] Lettura sequenziale di più file


kerbero
22-06-2007, 19:12
Salve! All'interno di un programma dovrei effettuare la lettura (sequenziale) di più file; la procedura che ho scritto è la seguente


void CaricaDaFile(char **paths,int num)
{
//...
for (i=0;i<num;i++)
{
fp=fopen(paths[i],"r");

while(!feof(fp))
{
regola=fgets(regola,100,fp);

if(regola!=NULL)
{
//elaborazioni delle informazioni (tra cui tokenizzazione di regola)
}

}
fclose(fp);
}
}


Il problema è il seguente: tutto funziona bene per il primo file che viene letto, ma a partire dal secondo file al momento della prima lettura la fgets mi ritorna NULL.
Ci sto sbattendo da stamattina.... :dhò:
sapreste darmi una mano? Grazie

labrosan
23-06-2007, 12:01
Prova con questa modifica:



while(!feof(fp))
{
if ( fgets(regola,100,fp) )
{
//elaborazioni delle informazioni (tra cui tokenizzazione di regola)
}

kerbero
23-06-2007, 12:58
Niente da fare :( :( ....mi legge sempre e solo il primo file....

oregon
23-06-2007, 13:35
Sei sicuro che i file siano tutti presenti e contengano dei dati?

Che i nomi dei file sia correttamente presenti nell'array?

Prova a scrivere semplicemente



void CaricaDaFile(char **paths,int num)
{
//...
for (i=0;i<num;i++)
{
fp=fopen(paths[i],"r");

printf("%p %s\n", fp, path[i]);

fclose(fp);
}
}


e controlla vedi la lista che viene visualizzata ...

labrosan
23-06-2007, 13:48
Io ho creato 3 file txt ed ho lanciato questo programmino.



#include <stdio.h>

void CaricaDaFile(char **paths,int num)
{
int i=0;
FILE *fp;
char regola[100];

for (i=0;i<num;i++)
{
fp=fopen(paths[i],"r");

while(!feof(fp))
{
if ( fgets(regola,100,fp) )
{
printf("%s\n",regola);
}

}
fclose(fp);
}
}

int main()
{
char *nomi[]={"a.txt","b.txt","c.txt"};
int n=3;

CaricaDaFile(nomi,n);

return 0;
}


e funziona perfettamente.

Loading