Lettura lista da file

di il
3 risposte

Lettura lista da file

Salve a tutti

sto facendo un progetto in C il cui scopo è quello della gestione di un negozio. Per ogni articolo viene inserito codice, nome, marca e 2 "parole chiave". L'inserimento degli articoli avviene tramite una lista (ogni nodo è rappresentato da un articolo e la lista, nella sua totalità, rappresenta tutto il negozio). Tale lista viene poi salvata su un file (in pratica avrò un file che contiene una lista).

Ciò che devo fare è ricercare un articolo tramite parole chiave (vengono chieste all'utente le due parole chiave da ricercare e la funzione deve restituire codice, nome e marca degli articoli che possiedono tutte e due le parole chiave inserite o almeno una delle due parole chiave).

Premetto che il nome e la marca dell'articolo vengono letti utilizzando la funzione fgets (in quanto potrebbero essere composti anche da più parole), mentre le due parole chiave (essendo appunto una singola parola) vengono lette utilizzando la funzione scanf.


Il mio problema è questo: come faccio a leggere dal file gli elementi della lista (ossia ogni singolo articolo)? Perché il file non "sa" che ha una lista memorizzata e di conseguenza non è in grado di riconoscere i diversi campi di ogni singolo articolo e quindi non riesco a confrontare le due parole chiave inserite dall'utente con quelle degli articoli perché di fatto "non so" quali sono le parole chiave dell'articolo.

Spero di essere stata abbastanza chiara.
Grazie in anticipo a tutti!

3 Risposte

  • Re: Lettura lista da file

    No ... non si è capito il problema che riporti alla fine, quello della lettura dei dati da file ...

    Facci vedere il contenuto di un file di esempio, in cui sono presenti due articoli
  • Re: Lettura lista da file

    Inseriti due articoli dentro al file avrò queste cose:
    01

    scarpe da ginnastica

    camminata in montagna

    scarpe
    montagna

    02

    ombrello

    resistente al vento

    ombrello
    vento


    La funzione ricerca dovrebbe avere questa impostazione:

    void ricerca (struct articolo *testa)
    {
    FILE *fp;
    char search[2][30]; //Parole da ricercare
    int i;

    //apro il file in lettura
    fp=fopen("articoli.txt","r");

    if (fp!=NULL)
    {
    for (i=0; i<2; i++)
    {
    printf("Inserisci tag %d ° da ricercare: \n",i+1);
    scanf("%s", search);
    }


    for (i=0; i<3; i++)
    {
    while (!feof(fp))
    {
    //COSA DEVO FARE QUI? (Per poter confrontare le 2 parole chiave con le parole chiave dell'articolo?)
    }
    }
    //chiudo il file
    if (fclose(fp)==EOF){
    printf("Errore durante la chiusura del file \n");
    exit(1);
    }

    }else{
    printf("Errore durante l'apertura del file. \n");
    exit(1);
    }
    }
  • Re: Lettura lista da file

    Leggi da file i vari campi di un articolo in apposite variabili (a che serve il ciclo for di 3/). Poi confronti le parole ricercate con quelle appena lette e decidi cosa fare.
Devi accedere o registrarti per scrivere nel forum
3 risposte