Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
[C] Scrivere Sui FIle
Nuovo argomento   Rispondi    Indice del forum -> Programmazione
Precedente :: Successivo  
Autore Messaggio
Mrikolino
Mortale devoto
Mortale devoto


Registrato: 11/06/08 10:50
Messaggi: 5

MessaggioInviato: 05 Lug 2008 16:08    Oggetto: [C] Scrivere Sui FIle Rispondi citando

Allora spiego brevemente: ho una lista di studenti in ogni nodo di questa lista sono contenuti dati dello studente e poi un richiamo ad un vettore di record dove sono registrati gli esami di tale studente. la procedura di lettura lista e la seguente:
Codice:

void stampa(list_pointer ptr)//puntatore alla lista
{
   int i;
   
   while(ptr){
          printf("=======================================================");
            printf("\n Nome: %s",ptr->nome);  printf("\t Cognome: %s",ptr->cognome);
            printf("\n Matricola: %d",ptr->matricola);
           printf("\n Data di Nascita: %s",ptr->datanascita);
           printf("\n Anno Di Immatricolazione: %d",ptr->anno_matr);
         
             for(i=0;i <=  ptr->dim-1;i++){
             printf("\n======================ESAMI========================\n\n");
             printf("\n Materia Esame: %s", ptr->e[i].materia_esami_sost);
             printf("\n Voto: %d",ptr->e[i].voto); printf(" Data Esame: %s",ptr->e[i].data_esame);
            }
           printf("\n Anno Corso: %s",ptr->anno_corso);
      
           printf("\n\n\n");
           ptr=ptr->link;
          
     }
     getchar();
}


ecco come faccio a scriverlo su file??? e magari caricarlo??? vi prego aiutatemi....
Top
Profilo Invia messaggio privato
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 21:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 06 Lug 2008 18:57    Oggetto: Rispondi

Ciao,
prima di tutto non è che il prototipo della funzione stampa è:
Codice:

void stampa(list_pointer *ptr);

invece di:
Codice:

void stampa(list_pointer ptr);

?
A parte questo: per scrivere su file C mette a disposizione varie funzioni.
Per prima cosa dobbiamo aprire il file su cui vogliamo lavorare e per farlo dobbiamo usare fopen(...).
Questa funzione riceve 2 parametri 1) il percorso assoluto del file da gestire e 2) la modalità di apertura dello stesso.
Ritorna in caso di successo un puntatore al file altrimenti NULL.
Un file può essere aperto in varie modalità: ascii o binario, in scrittura, in lettura, in scrittura/lettura o in append (in scrittura o in scrittura/lettura).
La modalità ascii prevede che il file venga trattato come testo ascii, potrai leggere e scrivere stringhe formattate e non.
La modalità binaria invece fa si di poter "scaricare" la ram su disco o "caricare" in ram il contenuto del file.
Se noi vogliamo portare su file l'output del tuo programma dovremo usare la modalità ascii; se vogliamo portare su disco la struttura della tua lista così come viene trattata in ram useremo la modalità binaria.
Supponiamo di scrivere in modalità ascii: utilizzeremo la funzione fprintf(...) che è identica a prinf(...) ma che riceve in più il puntatore al file in cui vogliamo scrivere.
facciamo qualche esempio:
per aprire un file ascii in scrittura dobbiamo scrivere qualche cosa del tipo
Codice:

#include <stdio.h>
...
int main()
{
/*
   puntatore al file: FILE è una struttura definita in stdio.h e contiene le info che il filesystem usa per gestire i file
*/
   FILE *p;   
   
/*
   provo ad aprire il file in scrittura ascii.
   Il percorso è "/home/pippo/file.txt".
   Se l'operazione ha successo da qui in poi mi riferirò al file con p altrimenti p conterrà NULL.
   Se il file non esiste, "w" tenta di crearlo: se esiste "w" distrugge il contenuto e sposta il riferimento alla posizione di prossima       scrittura all'inizio del file.
   
*/
   p=fopen("/home/pippo/file.txt","w");
   
   if (p==NULL)
   {
      puts("Non riesco ad aprire il file!");   
      return;
   }
   ...
}

Per scrivere sul file usiamo fprintf(...):
Codice:

...
int x=12;
fprintf(p,"la var x vale: %d",x);
...

e sul file abbiamo una riga con scritto: "la var x vale: 12".
Alla fine di tutto dobbiamo chiudere il file con:
Codice:

...
fclose($p);

Ti rimando al seguente link per una trattazione un po' più approfondita arricchita di esempi pratici:
Gestione dei file ad alto livello in C
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Programmazione Tutti i fusi orari sono GMT + 2 ore
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi