Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    81

    [C] Problemi nella lettura di più file

    Salve! All'interno di un programma dovrei effettuare la lettura (sequenziale) di più file; la procedura che ho scritto è la seguente
    codice:
    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....
    sapreste darmi una mano? Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    569
    Prova con questa modifica:

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    81
    Niente da fare ....mi legge sempre e solo il primo file....

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    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

    codice:
    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 ...

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    569
    Io ho creato 3 file txt ed ho lanciato questo programmino.

    codice:
    #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.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.