Comportamento strano programma per lettura file

di il
4 risposte

Comportamento strano programma per lettura file

Allora questa bozza di programma:

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

int main() {
	FILE *fp_orig1;/*puntatore file di origine*/
	char codice_albergo1[3], codice_albergo2[3];
	char citta_albergo[20];
	int categoria, camere;
	float prezzo1=0, prezzo2=0;
	bool flag_confronto=false;

	if ((fp_orig1=fopen("alberghi.txt", "r")) == NULL)
	{
		printf("Errore nell'apertura del file");
		exit(1);
	}

	while (!feof(fp_orig1))
	{
           fscanf(fp_orig1, "%s%s%d%d%f", codice_albergo1, citta_albergo, &categoria, &camere, &prezzo1);
        }

        fclose(fp_orig1);

	system("pause");
	return 0;
}
stranamente si blocca nel ciclo while di lettura file,
quando entra in gioco la fscanf. Qualcuno saprebbe dirmi
dove è l'inghippo?

4 Risposte

  • Re: Comportamento strano programma per lettura file

    Ma come è fatto il file di dati?
  • Re: Comportamento strano programma per lettura file

    oregon ha scritto:


    Ma come è fatto il file di dati?
    Eccolo, un semplice file di testo:

    A123 Venezia 1 20 75.80
    B323 Roma 2 15 55.50
    C999 Milano 1 55 60.90
  • Re: Comportamento strano programma per lettura file

    wrugg25 ha scritto:


    Riscrivi il ciclo nella forma:
    
    	while (!feof(fp_orig1))
    	{
              	 if(fscanf(fp_orig1, "%s%s%d%d%f", codice_albergo1, citta_albergo, &categoria, &camere, &prezzo1) < 5)
               		break;
            }
    
    E dimmi se cambia qualcosa: ho idea che il tuo problema dipenda da una combinazione degli effetti di feof() ed fscanf(), ma al momento non ho tempo per scriverti dettagliatamente in che modo.
    Prova il mio codice, e se risolve il tuo problema più tardi ti scrivo perchè ti ho dato questo suggerimento


    Allora ho provato il tuo codice ed effettivamente non si blocca, perfetto!
    Poi ho aggiunto una stampa per un ulteriore controllo, modificando il pezzo
    di codice così:
    
    while (!feof(fp_orig1))
       {
    		if (fscanf(fp_orig1, "%s%s%d%d%f", codice_albergo1, citta_albergo, &categoria, &camere, &prezzo1) < 5)
    		{
    			printf("Errore durante la lettura del file.\n");
    			break;
    		}
    		else
    		{
    			printf("%s %s %d %d %f\n", codice_albergo1, citta_albergo, categoria, camere, prezzo1);
          }   
    	}
    
    Grazie mille per la dritta
  • Re: Comportamento strano programma per lettura file

    Ok, ho letto le ulteriori precisazione e spiegazioni e sicuramente sono molto utili, oltre che interessanti.
    Grazie ancora
Devi accedere o registrarti per scrivere nel forum
4 risposte