Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    31

    [C++] Record.. Esistono?

    Salve, dovrei fare un programma in C++ (seguendo uno già esistente fatto il pascal) e mi servirebbe creare i record anche in C++, esistono?
    Una volta ho letto qualcosa circa il costrutto struct, ma è la stessa cosa dei record? Se si, potete farmi un esempio di sintassi?
    Grazie

    P.S. se può servire il listato in pascal è questo: http://pastebin.com/MJ4Rdg9s

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Sì, le struct vanno bene ... ma lo devi fare in C++? Allora puoi usare le classi ... e le stringhe (string) del C++ ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    31
    Originariamente inviato da oregon
    Sì, le struct vanno bene ... ma lo devi fare in C++? Allora puoi usare le classi ... e le stringhe (string) del C++ ...
    Classi? Non ho proprio idea di dove partire con la programmazione ad ogetti in C++...
    Le stringhe le sto usando (tramite l'header string.h).

    Ora mi è sorto un problema: come si fa un file di record? In pascal i file di testo sono completamente diversi dai file di record; è uguale anche in C++?

    Io sono arrivato qui:
    codice:
    #include <string.h>
    #include <iostream>
    
    using namespace std;
    
    struct rec_studenti {
        string nome;
        string cognome;
        string matricola;
        string classe;
        string sezione;
    };
    
    int n, last;
    
    int main(int argc, char *argv[])
    {
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    e moh come lo dichiaro un file di record?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Usa la fopen per aprire il file in binario e la fwrite/fread per scrivere/leggere una struttura. Ti posizioni sul record con la fseek.

    Tieni presente che il record deve avere dimensioni fisse. E' meglio usare dei vettori di stringhe all'interno della struct

    codice:
    struct rec_studenti {
        char nome[25];
        char cognome[25];
        char matricola[10];
        char classe[3];
        char sezione[2];
    };
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    31
    Originariamente inviato da oregon
    Usa la fopen per aprire il file in binario e la fwrite/fread per scrivere/leggere una struttura. Ti posizioni sul record con la fseek.

    Tieni presente che il record deve avere dimensioni fisse. E' meglio usare dei vettori di stringhe all'interno della struct

    codice:
    struct rec_studenti {
        char nome[25];
        char cognome[25];
        char matricola[10];
        char classe[3];
        char sezione[2];
    };
    Ehm, non avermene, ma non ho capito granché bene come si usa fseek() :/

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    31
    codice:
    #include <string.h>
    #include <iostream>
    
    using namespace std;
    
    struct rec_studenti {
        char nome[25];
        char cognome[25];
        char matricola[10];
        char classe[3];
        char sezione[2];
    };
    
    int n, last;
    rec_studenti studente;
    
    int main(int argc, char *argv[]) {
        FILE *f;
        
        f = fopen("studenti.txt", "w");
            
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    
    void file_write(struct rec_studenti) {
        FILE *f;
        f = fopen("studenti.txt", "r");
        
        fseek(f, 0,SEEK_END);
        
        while (studente.nome != "fine") {
            cout << "Inserire nome alunno ";
            cin >> studente.nome;
    
            if (studente.nome != "fine") {
                cout << "Inserire cognome alunno ";
                cin >> studente.cognome;
            
                cout << "Inserire matricola ";
                cin >> studente.matricola;
            
                cout << "Inserire classe ";
                cin >> studente.classe;
            
                cout << "Inserire sezione ";
                cin >> studente.sezione;
            }
            
            // scrive i dati appena letti sul file (se il valore non è 'fine')
            if (studente.nome != "fine")
                fwrite(rec_studenti, 1, sizeof(rec_studenti), f);
        }
        
    }
    Fin ora ho scritto questo, ma a fwrite la compilazione si interrompe e mi trova un errore: "expected primary-expression before ',' token".. umh?

  8. #8
    Originariamente inviato da Whistler
    codice:
                fwrite(rec_studenti, 1, sizeof(rec_studenti), f);
    Fin ora ho scritto questo, ma a fwrite la compilazione si interrompe e mi trova un errore: "expected primary-expression before ',' token".. umh?
    il primo argomento di fwrite deve essere un indirizzo, non un tipo.
    codice:
                fwrite(&studente, 1, sizeof(rec_studenti), f);
    ;-)

  9. #9
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Whistler
    Le stringhe le sto usando (tramite l'header string.h).
    Usi la classe string includendo string.h... ed il compilatore non si lamenta? :master:
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    31
    Originariamente inviato da MacApp
    il primo argomento di fwrite deve essere un indirizzo, non un tipo.
    codice:
                fwrite(&studente, 1, sizeof(rec_studenti), f);
    ;-)
    Ok grazie per il consiglio, proverò appena posso (non è più urgentissimo ormai :P)

    Usi la classe string includendo string.h... ed il compilatore non si lamenta?
    Dovrebbe? :master:

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.