Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    249

    [c++] Apertura file

    Ciao, avrei l'esigenza di aprire piu file i cui nomi sono contenuti in una tabella e leggerne la prima riga.
    Ho scritto il seguento codice

    codice:
    for(i=0;i<a;i++)
      	{  		
           buffer = new char[64];  		
           Temp.open(Table[i]);  		
           if(!Temp)  		         
                cout << "error opening file" << endl;
           Temp.getline(buffer,64,'\n');  		
           cout << buffer <<endl;
           delete buffer;
           Temp.close();
      	}
    Il primo file della tabella lo apre e legge correttamente la prima riga, mentre gli altri esce con un errore di apertura del file!
    Qualcuno sa spiegarmi perchè e come posso risolvere??
    grazie!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    E Table come e' definita ?

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    249
    è un array di stringhe.

    char Table[25][31];

    Facendo il debug ho controllato i valori che assume e sono giusti...
    Tra l'altro invertendo l'ordine degli elementi cioè mettendo il secondo al primo posto questo viene aperto

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Potresti postare tutto il codice utile per poterlo provare velocemente?

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    249
    Purtroppo tutto il codice al momento è un problema..come avrai capito nn sono un mostro in programmazione quindi ho un pezzo qui e uno li e li testo separatamente!!

    int main()
    {
    int a,i;
    char *buffer;
    char Table[25][31];
    Temp.open("k:\\TempEmu1.txt");

    while((!Temp.eof())||(i == 24))
    {
    Temp.getline(Table[a],64,'\n');
    a++;
    }
    for(i=0;i<a;i++)
    {
    buffer = new char[64];
    Temp.open(Table[i]);
    if(!Temp)
    cout << "error opening file" << endl;
    Temp.getline(buffer,64,'\n');
    cout << buffer <<endl;
    delete buffer;
    Temp.close();
    }
    }

    questo spero che ti basti per provare...devi ovviamente crearti un file da cui leggere i nomi degli altri file.
    Grazie dell'aiuto!!

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    In particolare

    Temp

    come e' definito? Che oggetto e'?

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Penso sia definito con

    ifstream Temp;

    ma vedo che nella parte di codice (abbastanza confuso ...) manca qualcosa indicato

    a=0; // deve essere inizializzata
    while(!Temp.eof()) // i non e' mai valorizzata ... da togliere
    {
    Temp.getline(Table[a++],64,'\n');
    if(a>24) break; // controllo max numero nomi di file da leggere
    }

    Temp.close(); // questo manca prima di utilizzare Temp nuovamente

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    249
    Originariamente inviato da oregon
    Penso sia definito con

    ifstream Temp;

    ma vedo che nella parte di codice (abbastanza confuso ...) manca qualcosa indicato

    a=0; // deve essere inizializzata
    while(!Temp.eof()) // i non e' mai valorizzata ... da togliere
    {
    Temp.getline(Table[a++],64,'\n');
    if(a>24) break; // controllo max numero nomi di file da leggere
    }

    Temp.close(); // questo manca prima di utilizzare Temp nuovamente
    If stream è appunto definto con ifstream, la variabile a in realtà è passata da un'altra funzione...Temp.close() lo avevo messo quindi secondo te è un problema nel ciclo for?
    Adesso non ho la possibilità di provare, quando rientro provo a sostituire il for con il while e poi ti faccio sapere!
    Grazie mille per la disponibilità!!
    ciao ciao

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    249
    Grazie per l'aiuto!! Ho provato a sostituire il for con il while ed è tutto ok! Adesso ho riscritto il for e funziona comunque!!
    A sto punto vorrei sapere qual'è migliore in termini di efficienza, il for o il while??
    Ciao!!

  10. #10
    Originariamente inviato da alwaysnew
    Grazie per l'aiuto!! Ho provato a sostituire il for con il while ed è tutto ok! Adesso ho riscritto il for e funziona comunque!!
    A sto punto vorrei sapere qual'è migliore in termini di efficienza, il for o il while??
    Ciao!!
    Non cambia nulla! Il for può essere strutturato per funzionare come un while "classico" e viceversa
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

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.