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

    [C] Salvare Struttura in un File

    Ragazzi nessuno di voi mi saprebbe dire come faccio a salvare una struttura in un file?
    Questo è il mio programma:
    Ringrazio chi mi volesse aiutare..ciao scusate il disturbo (ps: ho l'esame mercoledi :P)

    #include <stdio.h>
    #include <stdlib.h>
    #define MAX 60

    /*CREAZIONE DI UNA STRUTTURA */
    typedef struct {
    char nome[20];
    char cognome[20];
    int laboratorio;
    int scritto;
    int orale;
    int media;
    } studente_t;

    /*DICHIARAZIONE FUNZIONI*/
    studente_t inserisci_dettagli(void);
    void stampa_dettagli(studente_t stud);

    int
    main()
    {
    /*DICHIARAZIONE VARIABILI*/
    studente_t studente[MAX];
    int n,i;

    printf ("inserire il numero degli studenti (MASSIMO 60) --->");
    scanf ("%d",&n);
    for (i=0;i<n;i++)
    {
    printf ("\n\n Inserisci i dati del %d studente ",i+1);
    studente[i]=inserisci_dettagli(); /*CHIAMATA FUNZIONE*/
    };

    for (i=0;i<n;i++)
    {
    printf("\n\n I voti del %d studente sono", i+1);
    stampa_dettagli (studente[i]); /*CHIAMATA FUNZIONE*/
    };

    system ("pause");
    return(0);
    }

    /*FUNZIONE*/
    studente_t inserisci_dettagli()
    {
    studente_t stud;

    printf("\n\n COGNOME ----->");
    scanf("%s",stud.cognome);

    printf("\n\n NOME ----->");
    scanf("%s",stud.nome);

    printf("\n\n VOTO DELLA PROVA DI LABORATORIO ----->");
    scanf("%d",&stud.laboratorio);

    printf("\n\n VOTO DELLA PROVA SCRITTA ----->");
    scanf("%d",&stud.scritto);

    printf("\n\n VOTO DELLA PROVA ORALE ----->");
    scanf("%d",&stud.orale);

    stud.media=(stud.laboratorio+stud.orale+stud.scrit to)/3;
    return(stud);
    }


    /*FUNZIONE*/
    void stampa_dettagli (studente_t stud)
    {
    printf("\n\n COGNOME ----> %s", stud.cognome);
    printf("\n\n NOME ----> %s", stud.nome);
    printf("\n\n PROVA DI LABORATORIO ----> %d", stud.laboratorio);
    printf("\n\n PROVA SCRITTA ----> %d", stud.scritto);
    printf("\n\n PROVA ORALE ----> %d", stud.orale);
    printf("\n\n VOTO FINALE ----> %d\n", stud.media);
    }


    Grazie#include <stdio.h>
    #include <stdlib.h>
    #define MAX 60

    /*CREAZIONE DI UNA STRUTTURA */
    typedef struct {
    char nome[20];
    char cognome[20];
    int laboratorio;
    int scritto;
    int orale;
    int media;
    } studente_t;

    /*DICHIARAZIONE FUNZIONI*/
    studente_t inserisci_dettagli(void);
    void stampa_dettagli(studente_t stud);

    int
    main()
    {
    /*DICHIARAZIONE VARIABILI*/
    studente_t studente[MAX];
    int n,i;

    printf ("inserire il numero degli studenti (MASSIMO 60) --->");
    scanf ("%d",&n);
    for (i=0;i<n;i++)
    {
    printf ("\n\n Inserisci i dati del %d studente ",i+1);
    studente[i]=inserisci_dettagli(); /*CHIAMATA FUNZIONE*/
    };

    for (i=0;i<n;i++)
    {
    printf("\n\n I voti del %d studente sono", i+1);
    stampa_dettagli (studente[i]); /*CHIAMATA FUNZIONE*/
    };

    system ("pause");
    return(0);
    }

    /*FUNZIONE*/
    studente_t inserisci_dettagli()
    {
    studente_t stud;

    printf("\n\n COGNOME ----->");
    scanf("%s",stud.cognome);

    printf("\n\n NOME ----->");
    scanf("%s",stud.nome);

    printf("\n\n VOTO DELLA PROVA DI LABORATORIO ----->");
    scanf("%d",&stud.laboratorio);

    printf("\n\n VOTO DELLA PROVA SCRITTA ----->");
    scanf("%d",&stud.scritto);

    printf("\n\n VOTO DELLA PROVA ORALE ----->");
    scanf("%d",&stud.orale);

    stud.media=(stud.laboratorio+stud.orale+stud.scrit to)/3;
    return(stud);
    }


    /*FUNZIONE*/
    void stampa_dettagli (studente_t stud)
    {
    printf("\n\n COGNOME ----> %s", stud.cognome);
    printf("\n\n NOME ----> %s", stud.nome);
    printf("\n\n PROVA DI LABORATORIO ----> %d", stud.laboratorio);
    printf("\n\n PROVA SCRITTA ----> %d", stud.scritto);
    printf("\n\n PROVA ORALE ----> %d", stud.orale);
    printf("\n\n VOTO FINALE ----> %d\n", stud.media);
    }

  2. #2
    Salvane i singoli campi nel file, non vedo dove sia la difficoltà... :master:
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    cioè nn ho capito cosa intendi?
    La difficoltà sta che ho imparato il C in 8 ore di lezione all'uni...troppo poche....

  4. #4
    Domanda: ma tu sai, al di là del caso specifico, come scrivere dati in un file?
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    so come scrivere una stringa su un file...ho studiato degli esempi


    #include <stdio.h>
    char c;
    main()
    {
    FILE *p;
    p=fopen("Testo.txt","a");
    printf("Inserisci un testo e premi # e INVIO per salvare ed uscire!\n\n");
    fprintf(p,"*************************");
    while((c=getchar())!=10)
    {
    fputc(c,p);
    }

    fclose(p);
    }


    In questo modo scrivo la stringa, ma nn riesco a riportare questo esempio nella struttura. Ragazzuoli nn sono bravissimo, cioè i file gli ho capiti a metà, altrimenti lo avrei fatto ecco xchè vi sto chiedendo aiuto...scusatemi

  6. #6
    cosi mi funziona, è giusto?

    /*FUNZIONE*/
    studente_t inserisci_dettagli()
    {
    studente_t stud;
    char c;
    FILE *file;
    file=fopen("studente.txt", "w");

    if (file==NULL)
    {
    printf ("Impossibile aprire il file");
    }
    else
    {

    printf("\n\n COGNOME ----->");
    scanf("%s",stud.cognome);
    fprintf(file,"%s", stud.cognome);
    while((c=getchar())!=10)
    {
    fputc(c,file);
    }

    fclose(file);
    }

  7. #7
    Apri il file come nel tuo esempio, stampaci il contenuto dei singoli campi con la fprintf (che funziona esattamente come la printf solo che scrive non sullo schermo ma sul file che gli passi come primo argomento) e quindi, sempre come nell'esempio, chiudi il file.
    codice:
    FILE *p = fopen("nomefile.ext","a");
    studente_t stud;
    /*popola in qualche modo la struttura
    ...
    */
    fprintf(p, "%s\n",stud.cognome);
    fprintf(p, "%s\n",stud.nome);
    fprintf(p, "%d\n",stud.laboratorio);
    /*eccetera*/
    fclose(p);
    .
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    grazie mille ci sono riuscitooooooo....scusa era proprio na cazzata, mi stavo perdendo in un bicchiere di acqua...
    sai dove sbagliavo prima di aprire questo topic? praticamente nn facevo la printf ma la scanf...

  9. #9
    Amaro C++, il gusto pieno dell'undefined behavior.

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.