Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [C] Numero progressivo su file

    In un progetto in C ho creato una procedura per l'inserimento e la scrittura su file di uno (o più record) contenenti campi stringa come NOME, COGNOME, TELEFONO...etc e soprattutto ho un campo ID che deve contenere un intero che farà da numero progressivo. Come faccio a ogni inserimento a tener traccia dell'ID dell'ultimo record inserito così da poterlo maggiorare di 1?

    *Il campo ID non deve essere inserito dall'utente, ma calcolato dal programma a partire dal primo inserimento

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,472
    Puoi memorizzare l'ultimo ID usato all'inizio del file.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Ok, ma a livello di codice che funzioni devo utilizzare?
    diciamo che la struttura è questa

    codice:
    typedef struct{
     int id;
     char nome[20];
     char cognome[20];
    } scheda;
    FILE *filedata
    scheda persona;

    Nella mia procedura faccio tipo:

    codice:
    void inserimentodati(void)
    {
    printf("Nome---> ");
    scanf("%s", persona.nome);
    printf("Cognome---> ");
    scanf("%s", persona.cognome);
    filedata=fopen("data.txt","a+");
    fwrite(&persona,sizeof(scheda),1,filedata);
    fclose(filedata)
    Cosa devo aggiungere per avere l'ID progressivo cui facevo riferimento?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,472
    Devi riservare un record, il primo, memorizzando il numero dell'ultimo ID utilizzato (o del primo da utilizzare). In questo modo, ad ogni inserimento, leggerai e aggiornerai questo valore per avere traccia degli ID usati.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Che linee di codice dovrei aggiungere? (sono davvero alle prime armi)

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,472
    Anche se sei alle prime armi, dovresti tentare tu di scrivere il programma in base alle dritte che ricevi ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Ci sto provando, ma credo mi manchi ancora qualche funzione.
    Io riservo il primo record. Ciò significa che nel campo ID del primo record dovrò salvare di volta in volta il mio contatore, giusto?
    Vediamo se a livello di ragionamento sto capendo qualcosa. La procedura inserimento la farei in questo modo.

    APRI FILE IN LETTURA
    SE (FILE NON TROVATO)
    {CREA FILE
    scheda.id<-- 1
    MEMORIZZA scheda.id in una variabile esterna che richiamerò al prossimo inserimento
    MEMORIZZA IL RECORD SCHEDA SU FILE
    CHIUDI FILE}
    ALTRIMENTI
    {LEGGI PRIMO RECORD
    INCREMENTA scheda.id
    MEMORIZZA scheda.id in una variabile esterna che richiamerò al prossimo inserimento
    AGGIORNA PRIMO RECORD
    CHIUDI FILE}

    //procedo con l'inserimento
    scheda.id<--- variabilememorizzata
    nome...
    ....
    APRO FILE per appendere il RECORD INSERITO
    SCRIVO RECORD
    CHIUDO IL FILE

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.