Passaggio di informazioni da file a struct

di il
13 risposte

Passaggio di informazioni da file a struct

Ho un programma che deve acquisire delle informazioni da file(già creato) precisamente informazioni su dei voli aerei e devo inserire tali informazioni all'interno di una struct, come potrei passare le informazioni dopo averle lette da file sulla struct?

13 Risposte

  • Re: Passaggio di informazioni da file a struct

    Le leggi direttamente all'interno della struttura.

    Mostra il codice che hai scritto e avrai qualche consiglio su come fare.

    Facci un esempio anche del file da leggere.
  • Re: Passaggio di informazioni da file a struct

  • Re: Passaggio di informazioni da file a struct

    Crea la tua struct e leggi con la scanf da file direttamente negli elementi della struct.

    Se non cominci a scrivere il codice, impostando la struct e aprendo il file, come si fa a controllare cosa fai? Devi iniziarlo tu l'esercizio, qui non si scrive al posto degli altri.
  • Re: Passaggio di informazioni da file a struct

    #include <stdio.h>
    #include <stdlib.h>
    #include "file.h"
    
    #define DIMENSIONE_RIGAFILE 8
    #define DIM 5
    #define MAX_LUNG_FILE 20
    
    struct voliaerei
    {
        char nomeCompagnia[DIM];
        int oraPartenza;
        int gate;
        int numeroPasseggeri;
        int OreVoloFatte;
        int Carburante;
    };
    
    int leggifile(char* nome_file)
     {
        FILE *filePTR;
        char riga_del_file[DIMENSIONE_RIGAFILE];
    
        struct voliaerei array_votialunni[DIM];
    
    
        int apertura;
        int i;
    
    
    
         filePTR = fopen(nome_file,"r");
    
        if(filePTR)
        {
            apertura=0;
            printf("Errori apertura: %d\n",apertura);
            printf("\n\nIl file contiene:\n\n");
    
            while(!feof(filePTR))
            {
    
                fgets(riga_del_file, DIMENSIONE_RIGAFILE, filePTR);
                if(riga_del_file==0)
                {
                    printf("File vuoto\n");
                }
                else{
    
                printf("%s",riga_del_file);}
    
    
            }
    
                 printf("\n\n");
    
        }
        else
        {
            apertura=1;
            printf("Errore apertura: %d",apertura);
    
        }
    
         fclose(filePTR);
    
         return apertura;
         }
    
    void chiedi_nome_file(char* nome_file) {
    
        char* estensione_file = NULL;
    
        printf("\nInserire il nome del file: ");
        scanf("%s", nome_file);
    
        if (nome_file == NULL) {
            printf("\n\n*** Errore nell'acquisizione del nome del file. ***\n\nUscita in corso...\n\n");
            free(nome_file);
            exit(EXIT_FAILURE);
        }
    
        if (strlen(nome_file) > MAX_LUNG_FILE-1) {
            printf("\n\n*** Errore: nome file troppo lungo. ***\n\nUscita in corso...\n\n");
            free(nome_file);
            exit(EXIT_FAILURE);
        }
    
        estensione_file = &nome_file[strlen(nome_file)-4];
    
        if (strcmp(estensione_file, ".txt") != 0) {
            printf("\n\n*** Cambiare l'estensione del file in .txt ***\n\nUscita in corso...\n\n");
            free(estensione_file);
            free(nome_file);
            exit(EXIT_FAILURE);
        }
    }
    
    void apri_file(char* nome_file, char* mod) {
    
    
        ptr = fopen(nome_file, mod);
    
        if (ptr == NULL) {
            printf("\n\n*** Errore nell'apertura del file. ***\n\nUscita in corso...\n\n");
            free(ptr);
            exit(EXIT_FAILURE);
        }
    }
    
    void chiudi_file(){
    
       if(fclose(ptr) != 0) {
            printf("\n\n*** Errore nella chiusura del file. ***\n\nUscita in corso...\n\n");
            free(ptr);
            exit(EXIT_FAILURE);
        }
    
    }
    
    Io con queste funzioni ho aperto e letto il file e il relativo contenuto ma non saprei come inserire nella struct, le informazioni lette
  • Re: Passaggio di informazioni da file a struct

    Usa i tag CODE quando posti il codice. Correggi il post precedente.
  • Re: Passaggio di informazioni da file a struct

    Chiedo scusa
  • Re: Passaggio di informazioni da file a struct

    Nessun problema, il fatto è che il codice non si capisce senza i tag CODE.

    Comunque, tu leggi tutta la linea dal file.
    In questo caso, sai suddividere le varie parti, anche se in variabili semplici?

    Oppure, usa la fscanf per ogni campo, direttamente nei campi della struct.
    Occhio che il vettore di struct non devi dichiararlo all'interno della funzione di lettura perché all'uscita, essendo locale, viene eliminata.
  • Re: Passaggio di informazioni da file a struct

    Si ma essendo che in una riga ci sono tutte le inforazioni, dovrei salvare il nome in un campo della struct e gli altri valori in altri campi della struct
  • Re: Passaggio di informazioni da file a struct

    Hai letto quanto ti ho scritto sulla fscanf?
  • Re: Passaggio di informazioni da file a struct

    Sisi, mi puoi dire solo come scrivere la fscanf? Così è giusto?
    fscanf(filePTR, array_votialunni, DIM);
  • Re: Passaggio di informazioni da file a struct

    Pofforbacco, ma provare da soli no?
  • Re: Passaggio di informazioni da file a struct

    Completalo tu [Code] fscanf(filePTR, "%s,%d,%d,%d,%d,%d", array_votialunni[i].nomeCompagnia, &.... Controlla la documentazione della fscanf ... e ricorda quello che ti ho detto sul vettore e che i deve partire da 0
  • Re: Passaggio di informazioni da file a struct

    Grazie dei consigli
Devi accedere o registrarti per scrivere nel forum
13 risposte