Precedente :: Successivo |
Autore |
Messaggio |
Mrikolino Mortale devoto

Registrato: 11/06/08 10:50 Messaggi: 5
|
Inviato: 05 Lug 2008 16:08 Oggetto: [C] Scrivere Sui FIle |
|
|
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 |
|
 |
freemind Supervisor sezione Programmazione


Registrato: 04/04/07 21:28 Messaggi: 4643 Residenza: Internet
|
Inviato: 06 Lug 2008 18:57 Oggetto: |
|
|
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:
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 |
|
 |
|
|
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
|
|