Come leggere un orario da file ?

di il
9 risposte

Come leggere un orario da file ?

Come posso leggere un orario in formato hh:mm da file ?

9 Risposte

  • Re: Come leggere un orario da file ?

    Se lo leggi in una stringa, puoi usare le normali funzioni per la lettura di dati da file di testo.
  • Re: Come leggere un orario da file ?

    Si infatti ho usato la sscanf per leggere, però non mi legge ciò che c'è scritto dopo il primo orario, in pratica il programma dovrebbe leggerlo e ignorarlo passando alla stringa successiva
  • Re: Come leggere un orario da file ?

    Dai maggiori dettagli sul contenuto del file e sul codice che hai usato
  • Re: Come leggere un orario da file ?

    Il file contiene:
    <stazione_partenza> <ora_partenza> <stazione_arrivo> <ora_arrivo>

    ho letto il file con:
    i=0;
            while(fgets(stringa, 86, fp) != NULL)
            {
                sscanf(stringa, "%s %s", treni[i].stazione_partenza, treni[i].stazione_arrivo);
                i++;
            }
    Successivamente conto il numero dei treni in partenza e di quelli in arrivo da una stazione data da linea di comando:
    for(i=0; i<=righe; i++)
            {
                if(strcmp(argv[2], treni[i].stazione_partenza)==0)
                {
                    ntreni_partenza++;
                }
            }
            for(i=0; i<=righe; i++)
            {
                if(strcmp(argv[2], treni[i].stazione_arrivo)==0)
                {
                    ntreni_arrivo+=1;
                }
            }
            printf("I treni in partenza dalla stazione di %s sono: %d\n", argv[2], ntreni_partenza);
            printf("I treni in arrivo alla stazione di %s sono: %d\n", argv[2], ntreni_arrivo);
    Però il numero dei treni in arrivo non me li conta
  • Re: Come leggere un orario da file ?

    Hai provato ad inserire delle printf nel codice per vedere quali dati stai confrontando?

    E la variabile

    righe

    quanto vale ? Perché utilizzi <= e non solo <
  • Re: Come leggere un orario da file ?

    Si anche perché ntreni_arrivo l'ho inizializzata quindi sarebbe come se si facesse ntreni_arrivo++
  • Re: Come leggere un orario da file ?

    oregon ha scritto:


    Perché utilizzi <= e non solo <
    Uso <= perché righe equivale proprio al valore massimo di i, ovvero alle righe lette nel file.

    Ho fatto una printf e nella stringa treni.stazione_arrivo mi mette proprio l'orario, ma non ne capisco il motivo.
    Dovrei fare in modo che l'orario venga letto ma ignorato
  • Re: Come leggere un orario da file ?

    astrumbale ha scritto:


    oregon ha scritto:


    Perché utilizzi <= e non solo <
    Uso <= perché righe equivale proprio al valore massimo di i, ovvero alle righe lette nel file.
    Quindi, partendo da 0, deve essere < e non <=
    Ho fatto una printf e nella stringa treni.stazione_arrivo mi mette proprio l'orario, ma non ne capisco il motivo.
    Dovrei fare in modo che l'orario venga letto ma ignorato


    Non ho capito ...
  • Re: Come leggere un orario da file ?

    Ho risolto mettendo nella typedef:
    typedef struct elenco_treni
    {
        char stazione_partenza[N];
        int ora_partenza[N];
        int minuti_partenza[N];
        char stazione_arrivo[N];
        int ora_arrivo[N];
        int minuti_arrivo[N];
    } Treni;
    
    Quindi la sscanf viene scritta così:
    i=0;
            while(fgets(stringa, 86, fp) != NULL)
            {
                sscanf(stringa, "%s %d:%d %s %d:%d", treni[i].stazione_partenza, treni[i].ora_partenza, treni[i].minuti_partenza, treni[i].stazione_arrivo, treni[i].ora_arrivo, treni[i].minuti_arrivo);
                i++;
            }
    Però questo è proprio l'unico modo per leggere l'orario da file ?

    E dato che se argc posso essere o 2 o 3, se sono 2 il file viene semplicemente letto, quindi io non visualizzerei nulla a video, giusto ?
Devi accedere o registrarti per scrivere nel forum
9 risposte