Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [C] Ricerca nei file

  1. #1

    Ricerca nei file (linguaggio C)

    Ciao a tutti,

    sto facendo un progetto di un esame di programmazione (linguaggio C) usando i file. Sono riuscito ad effettuare la scrittura e la lettura di un file binario.
    Il problema è nella ricerca sequenziale...
    Mi spiego meglio:

    Il mio programma scrive in un file (clienti.dat) il nome, cognome e l'età di un cliente. Se poi io in un secondo momento vorrei modificare uno di questi campi o cancellarli come devo fare?

    Ad esempio scrivo:

    Nome: Pippo
    Cognome: Rossi
    Età: 21

    Me lo scrive sul file.
    Poi decido di usare in un'altra funzione una printf che acquisisce il nome da cercare, legge sequenzialmente il file e se trova il nome che ho inserito nel file lo cancella o modifica.


    Sarei molto grato a chi mi desse una mano!!!
    Provoca il più bravo, morirai come uno schiavo.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Mostra il codice ...

  3. #3
    Ok. Il codice qui sotto è la scrittura su file di una lista di clienti:

    main ()
    {
    FILE *fpointer;
    int fine=0;
    fpointer=fopen("clienti.dat","ab");

    struct {
    ________char nome[15];
    ________char cognome[30];
    ________char sport[20];
    ________int n_acquisti;
    }cliente;

    if (fpointer==NULL)
    ____printf ("Impossibile aprire il file.");
    else{
    _____while (!fine){
    ________printf ("Inserite il nome del cliente: ");
    ________scanf ("%s",&cliente.nome);
    ________printf ("Inserite il cognome: ");
    ________scanf ("%s",&cliente.cognome);
    ________printf ("Inserite lo sport principale del cliente: ");
    ________scanf ("%s",&cliente.sport);
    ________printf ("Quanti acquisti ha effettuato? ");
    ________do{
    ___________scanf ("%d",&cliente.n_acquisti);
    ___________if (cliente.n_acquisti<=0)
    ___________printf ("Valore errato. Reinserire il valore: ");
    __________}
    ________while (cliente.n_acquisti<=0);
    ________fwrite (&cliente,sizeof(cliente),1,fpointer);
    ________printf ("Fine? (SI=1, NO=0) ");
    ________scanf ("%d",&fine);
    ________}
    fclose (fpointer);
    }

    system("PAUSE");
    return 0;
    }


    Il problema adesso è che se io, dopo aver il mio file "clienti", vorrei inserire il nome del cliente che cerco per far sì che venga letto il file in lettura, venga fatta una ricerca sequenziale sul file che ho scritto e che se trova il nome che cerco uguale a quello scritto nel file me lo modifichi o cancelli, non so come fare. La sola lettura del file e la sua stampa a video mi sono riuscite, ma il problema è proprio nella ricerca di un valore al suo interno per cancellarlo o modificarlo, naturalmente per poi riscrivere l'intero file senza il campo cancellato.
    Aiutatemi vi prego.
    Provoca il più bravo, morirai come uno schiavo.

  4. #4
    UP
    Provoca il più bravo, morirai come uno schiavo.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.