Chiudere un file prima del tempo

di smalldragon il
8 risposte
Salve a tutti

int massimo,ncolonne; massimo=0;ncolonne=1;z=0;t=0;indy=0;
       	ifstream winput(sorgente, ios::in);
        winput.get(carattere);
        while (!input.eof())
             {
              switch (carattere)
                    {
                case '$': { t=1; break; }
                case ';':
                    {
                     ncolonne++;
                     if (z>massimo) { massimo=z; }
                     z=0; break;
                    }
                case '\n'; { indy=1; break; }
                default: { z++; break; }
                    }
                if (indy == 0) { winput.get(carattere); }
                else // comando per uscire dalla While!
             }
 
cosa debbo mettere nella else per poter interrompere il ciclo while?
se metto direttamente la chiusura del file giustamente dovrebbe andarmi in errore!
qualche idea?
ringrazio tutti coloro che mi aiuteranno

8 Risposte

  • Scusate ho trovato un errore nella postazione del codice
    le variabili z,t ed indy sono int definite in un altra parte del programma
    carattere naturalmente e char
    int massimo,ncolonne; massimo=0;ncolonne=1;z=0;t=0;indy=0;
           	ifstream winput(sorgente, ios::in);
            winput.get(carattere);
            while (!winput.eof())
                 {
                  switch (carattere)
                        {
                    case '$': { t=1; break; }
                    case ';':
                        {
                         ncolonne++;
                         if (z>massimo) { massimo=z; }
                         z=0; break;
                        }
                    case '\n'; { indy=1; break; }
                    default: { z++; break; }
                        }
                    if (indy == 0) { winput.get(carattere); }
                    else // comando per uscire dalla While!
                 }
    
  • Aggiungi una variabile booleana nel controllo del ciclo while

    while (!winput.eof() && exc)

    all'inizio posta a true.

    Quando vuoi uscire, settala a false.
  • Grazie
  • A volte mi perdo in un bicchiere d'acqua!
  • Non bastava else break; ?
  • No perchè la break esce dallo switch mentre bisognava uscire dalla while
    comunque la soluzione di oregon funziona perfettamente
  • Cosa c'entra lo switch, che ne eri già fuori dal codice che hai postato? Comunque contento tu contenti tutti
  • Si hai ragine andava bene anche una break.
    però ho preferito usare la soluzione di oregon perchè io uso la break solo con le istruzioni switch è una break libera mi avrebbe causato confusione nel correggere eventuali errori.
Devi accedere o registrarti per scrivere nel forum
8 risposte