Aiuto programma archiviazione C

di il
3 risposte

Aiuto programma archiviazione C

Vorrei creare un programma in C per archiviare nomi, matricole, esami, date, eccetera...

il mio problema non è tanto il programma in se, ma il salvare tutto e poterlo riaprire senza rovinarlo, purtroppo non le ho ancora fatte ste cose, userei i file, ma non ho molta dimestichezza, non è che qualcuno potrebbe scrivermi un paio di stringhe?

3 Risposte

  • Re: Aiuto programma archiviazione C

    Se usi una lista puoi fare in questo modo
    esempio di lista
    struct database{		
        struct database *next;//Puntatore al nodo successivo
        char matricola[20];   
        char crediti[20];	
        char esame[10]; 
    }dbTesta, *dbPuntatore;
    e quindi nel main fai:
    FILE *file;
    /*a+ apre il file in scrittura in aggiunta e in lettura, creandolo se necessario, o aggiungendovi dati a partire dalla fine, e di conseguenza posizionandosi alla fine dello stesso*/
    file = fopen("./matricole", "a+");
    //Se il file è vuoto
    if(!file){
        dbTesta.next = NULL;
    }else{
        /*Se il file non è vuoto prende il db e lo copia in una lista di Record*/
        struct database db;  
        while(fread(&db, sizeof(struct database), 1, file)){
    	insert(&db);
        }
        db.next = NULL;
        dbPuntatore = &dbTesta;
    }
    fclose(file);
    In maniera tale che quando riapri il programma ti rimette l'intera lista che contiene il file sul tuo database dinamico

    per inserire invece dalla lista al file fai:
    fwrite(dbPuntatore, sizeof(struct database), 1, file);
  • Re: Aiuto programma archiviazione C

    La insert te la devi costruire ad esempio:
    int insert(struct database *db){
        struct database *temp = (struct database*) malloc(sizeof(struct database));//Allocazione
    /*copia dei dati in temp*/
        strcpy(temp->cogome, db->cognome);
        strcpy(temp->nome, db->nome);		
        strcpy(temp->esame, db->esame);
        dbPuntatore->next = temp;	
        dbPuntatore = temp;				
    }
  • Re: Aiuto programma archiviazione C

    Grazie
Devi accedere o registrarti per scrivere nel forum
3 risposte