File e puntatori a file
|
|
|
- Cosima Bartolini
- 8 anni fa
- Просмотров:
Транскрипт
1 File e puntatori a file Vitoantonio Bevilacqua [email protected] La libreria stdio.h mette a disposizione delle funzioni che hanno la peculiarità di trattare con questa nuova tipologia di dato, ovvero dati di tipo puntatore a FILE: Per fare ciò è necessario individuare dove risiede il file nella memoria di massa (hard disk, ecc.) utilizzando un puntatore a file la cui dichiarazione è: FILE *fp; //fp = File Pointer = Puntatore a file Successivamente è possibile aprire un determinato file mediante una funzione che ha la seguente sintassi: fp = fopen("c:\\...\\nome_file.txt", "Modo_apertura"); Ricordando che nel primo campo bisogna indicare il percorso completo del file con doppi backslash ( \\ ), e come modalità di apertura una delle seguenti: Modo r w Significato NB esistono altre modalità che saranno presentate in seguito read : apre un file di testo in modalità di sola lettura; se si verifica un errore (es. il file non esiste) la funzione fopen ritorna il codice di errore NULL write : apre un file di testo in modalità di sola scrittura. Se il file esiste, verrà sovrascritto, altrimenti verrà creato automaticamente. Prima di eseguire una qualsiasi operazione conviene verificare che il file esista, è possibile quindi inserire nel codice una condizione di robustezza: if(fp==null) printf( File inesistente ); In seguito è possibile importare il flusso di dati (stream) presente sul file mediante la funzione fscanf: fscanf (fp, %specificatore_di_tipo, argomenti); Il cui compito è di leggere ciò che è presente nel file (indicato dal puntatore fp) e copiarlo nella variabile indicata (argomenti); in questo modo scriviamo temporaneamente nella memoria RAM le informazioni dal file, salvato nella memoria di massa. Un altra funzione è la fprintf il cui compito è di scrivere su file, la sua sintassi è: fprintf (fp, %specificatore_di_tipo, argomenti); Con questa riga di codice si scrive nel file, salvato nella memoria di massa, indicato da fp, le informazioni che risiedono temporaneamente nella memoria RAM (nella variabile argomenti). Quando il file diventa non più necessario, è possibile chiuderlo tramite il seguente comando: fclose (fp); dove fp è il puntatore al file da chiudere. OSSERVAZIONE : Esistono quindi migliori versioni per l acquisizione e la stampa di informazioni: fscanf ed fprintf ; queste funzioni sono una versione generale delle funzioni scanf e printf. Infatti le prime due funzioni ( fscanf ed fprintf ) svolgono lo stesso lavoro delle ultime due semplicemente utilizzando come primo argomento stdin e stdout, i quali virtualizzano il concetto di tastiera e schermo. Pag. 1 a 5
2 ESEMPIO 1: utilizzo delle funzioni fscanf e fprintf char nome[20]; char cognome[20]; fprintf(stdout,"inserisci nome e cognome: "); /* Utilizzo della fprintf indicando come file "stdout" così trasferire dati effettuando un operazione di scrittura su schermo */ fscanf(stdin,"%s %s", nome, cognome); /* Utilizzo della fscanf indicando il puntatore a file che virtualizza la tastiera */ fprintf(stdout,"cognome: %s\t\tnome: %s", cognome, nome); /* Stampa a schermo del cognome e nome inseriti */ ESEMPIO 2: acquisizione e stampa su file void leggi_file(file *,int *); void scrivi_file(file *,int *); void stampa(int *); FILE *fp; int V[5]; fp=fopen("c:\\...\\leggi.txt","r"); //si presuppone l'esistenza di un file che //contenga 5 numeri disposti casualmente if(fp==null) printf("il file non esiste!\n"); else leggi_file(fp,v); stampa(v); fp=fopen("c:\\...\\scrivi.txt","w"); scrivi_file(fp,v); /* La funzione legge da file degli interi e li copia in un vettore */ void leggi_file(file *A, int *B) for(i=0; i<5; i++) fscanf(a," %d", &B[i]); /* La funzione stampa a schermo i valori interi contenuti nel vettore, e se la funzione precedente è andata a buon fine, i valori saranno gli stessi contenuti nel file */ void stampa(int *A) for(i=0; i<5; i++) fprintf(stdout,"%d\t\t", A[i]); Pag. 2 a 5
3 /* La funzione stampa su file i numeri che sono stati copiati nel vettore, in modo "ordinato" */ void scrivi_file(file *A, int *B) for(i = 0; i < 5; i++) fprintf(a, "%d\t\t", B[i]); INPUT : INPUT File Screen del file leggi.txt (aperto con Blocco Note). Si noti come i valori sono inseriti in maniera quasi casuale, c è solo l accortezza di averli inseriti separati da spazio o dall invio. OUTPUT: OUTPUT Schermo Screen della stampa a video del vettore che contiene i dati acquisiti dal file. OUTPUT File Screen del file scrivi.txt (aperto con Blocco Note). Si noti come i valori siano stati stampati in ordine. Pag. 3 a 5
4 ESEMPIO 3: acquisizione da file di informazioni riguardanti una classe di 10 studenti, e stampa su un file i bocciati in ordine crescente di voto, e su un altro file i promossi in ordine decrescente di voto. struct studente //Dichiarazione della struttura di uno studente char cognome[20]; char nome[20]; int voto; ; void leggi(file*, struct studente*); void ordina(struct studente*); void stampapromossi(file*, struct studente*); void stampabocciati(file*, struct studente*); struct studente classe[10]; //La classe, di fatto risulta un vettore di studenti FILE* fp; fp = fopen( "C:\\...\\Classe.txt", "r"); if (fp == NULL) printf( "Il file è inesistente!" ); //Condizione di robustezza else leggi(fp, classe); ordina(classe); fp = fopen( "C:\\...\\Promossi.txt", "w"); //Apre in modalità scrittura il file, //quindi se inesistente, lo crea stampapromossi(fp, classe); fp = fopen( "C:\\...\\Bocciati.txt", "w"); //Apre in modalità scrittura il file, //quindi se inesistente, lo crea stampabocciati(fp, classe); /* La funzione acquisisce da file Cognome, Nome e Voto di ciascuno studente */ void leggi(file* A, struct studente* B) for (i = 0; i < 10; i++) fscanf(a, "%s %s %d", B[i].cognome, B[i].nome, &B[i].voto); /* Ordina tramite algoritmo di SELECTION SORT il vettore classe, in ordine crescente di voto */ void ordina(struct studente* A) struct studente B; int i, j; for (i = 0; i < 9; i++) Pag. 4 a 5
5 int imin = i; for (j = i + 1; j < 10; j++) if (A[j].voto < A[imin].voto) imin = j; B = A[i]; A[i] = A[imin]; A[imin] = B; /* Stampa in ordine decrescente di voto tutti gli studenti promossi */ void stampapromossi(file* A, struct studente* B) for (i = 9; i > 0; i--) if (B[i].voto >= 18) fprintf(a, "%s\t\t%s\t\t%d\n", B[i].cognome, B[i].nome, B[i].voto); /* Stampa in ordine crescente di voto tutti gli studenti bocciati */ void stampabocciati(file* A, struct studente* B) for (i = 0; i < 10;i++) if (B[i].voto < 18) fprintf(a, "%s\t\t%s\t\t%d\n", B[i].cognome, B[i].nome, B[i].voto); Pag. 5 a 5
File binari e file di testo
I file File binari e file di testo distinzione tra file binari file di testo si possono usare funzioni diverse per la gestione di tipi di file diversi Programmazione Gestione dei file 2 File binari e file
Scrittura formattata - printf
Esercizi su Input/Output con formato FormattedIO 1 Scrittura formattata - printf Funzione printf int printf ( , ) La funzione restituisce un valore intero uguale ai caratteri
I files in C. A cura del prof. Ghezzi
I files in C A cura del prof. Ghezzi 1 Perchè i files? Realizzano la persistenza dei dati dati che sopravvivono all esecuzione del programma Sono delle strutture di dati sequenziali 2 Files e S.O. I files
Gestione dei File in C
Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania [email protected] http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte
Linguaggio C: i file
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica A - GES Prof. Plebani A.A. 2006/2007 Linguaggio C: i file La presente dispensa e da utilizzarsi ai soli fini didattici previa
Esercizio 1 (15 punti)
Esercizio 1 (15 punti) Corsi di laurea in Ingegnera Elettronica e Ingegneria Gestionale Fondamenti di Programmazione / Fondamenti di Informatica I Prova scritta del 16 giugno 2017 Il noto gioco MasterMind
I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002
I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002 dott.ssa Francesca A. Lisi [email protected] Sommario Generalità sui file in C I file ad accesso sequenziale I file di testo Riferimenti
OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C
CORSO DI LABORATORIO DI INFORMATICA CORSO DI LAUREA IN SDM ANNO ACCADEMICO 2011-2012 Docente: R. Sparvoli Esercitazioni: R. Sparvoli, F. Palma OTTAVA ESPERIENZA DI LABORATORIO L elaborazione dei files
Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN
Breve Manuale di Riferimento sulla Sintassi Linguaggi e versione aggiornata al 05/02/2004 Sommario Elementi di Base... 2 Dati, Tipi e Dichiarazioni... 2 Tipi di Dato di Base... 2 Tipi di Dato Strutturati...
Gestione dei File. dischi nastri cd
Gestione dei File Per mantenere disponibili i dati tra le diverse esecuzioni di un programma, questi si devono archiviare in file su memoria di massa (dati persistenti): dischi nastri cd Un file è un astrazione
Input/Output. Console e File.
Input/Output Console e File http://www.dia.uniroma3.it/~roselli/ [email protected] Credits Materiale a cura del Prof. Franco Milicchio Introduzione Le istruzioni di stampa servono a rendere visibili
Librerie C. Corso di Linguaggi e Traduttori 1 AA Corso di Linguaggi e Traduttori 1 AA stdio.h
Corso di Linguaggi e Traduttori 1 AA 2004-05 1 Corso di Linguaggi e Traduttori 1 AA 2004-05 stdio.h 2 Funzioni comuni di I/O? Le piu' comuni funzioni che permettono I/O sono getchar() e putchar():? int
Input/output in C e in C++
FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Input/output in C e in C++ 2001 Pier Luca Montessoro - Davide Pierattoni
Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE
Input/output da file Il linguaggio C non contiene istruzioni di I/O, in quanto tali operazioni vengono eseguite tramite funzioni di libreria standard. Questo approccio rende estremamente flessibile e potente
GESTIONE DEI FILE IN C
GESTIONE DEI FILE IN C Il concetto di file.. è una parte logicamente contigua del contenuto di un dispositivo! Deve essere capace di memorizzare grandi quantità di dati! I dati memorizzati devono sopravvivere
Gestione di files Motivazioni
Gestione di files Motivazioni Un programma in esecuzione legge (sequenzialmente) una sequenza di caratteri prodotti "al volo" dall'utente (tramite tastiera) il programma in esecuzione scrive (sequenzialmente)
Gestione dei file. File di testo e binari
Gestione dei file Un file e definito come un oggetto, presente nel file system, costituito da una sequenza continua di bytes Un file, per poter essere utilizzato, deve essere aperto Successivamente e possibile
Esercizi File Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Si ringrazia Raffaele Nicolussi Docenti Parte I prof. Silvio Salza [email protected]
LIBRERIE STANDARD in C. LIBRERIE STANDARD in C
LIBRERIE STANDARD in C La libreria standard del C è in realtà un insieme di librerie Per usare una libreria, non occorre inserirla esplicitamente nel progetto: ogni ambiente di sviluppo sa già dove cercarle
Unità Didattica 5 Linguaggio C. Stringhe. Accesso a file ASCII. Strutture.
Unità Didattica 5 Linguaggio C Stringhe. Accesso a file ASCII. Strutture. 1 Stringhe Una stringa è una sequenza di caratteri (es: ciao, sd!n29dnqa ); In C non esiste una variabile di tipo stringa; Una
Fondamenti di Informatica T. Linguaggio C: File
Linguaggio C: File I File Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa, che consente una memorizzazione persistente dei dati, non limitata dalle dimensioni della memoria centrale.
Formattazione avanzata. I/O Avanzato e File. Formattazione dell output. Formattazione avanzata. Forma completa degli specificatori
Formattazione avanzata Modificatori di o in output Modificatori di o in input Stream predefiniti I/O Avanzato e File 2 Formattazione dell output Formattazione avanzata L output (su schermo o su file) viene
Variabili e Istruzioni
Exit Menù Variabili e Istruzioni 1 Le Variabili Una VARIABILE è un oggetto identificato da un NOME e da uno STATO, detto CONTENUTO o VALORE. Possiamo immaginarla come una scatola contenuto Pippo 11 nome
Esercizio 1 (15 punti)
Esercizio 1 (15 punti) Corsi di laurea in Ingegnera Elettronica e Ingegneria Gestionale Fondamenti di Programmazione / Fondamenti di Informatica I Prova scritta del 30 giugno 2017 In un lontano paese da
Esercizio 1: funzione con valore di ritorno di tipo puntatore
Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 7 Esercitazione: 14 dicembre 2005 Esercizi su ricorsione, manipolazione stringhe, strutture dinamiche Problema: Esercizio
Informatica 1. Prova di recupero 21 Settembre 2001
Informatica 1 Prova di recupero 21 Settembre 2001 Si risolvano i seguenti esercizi. Ai fini della determinazione del voto finale il loro punteggio andrà sommato al punteggio del laboratorio. Il tempo complessivo
Fondamenti di Informatica 6. Algoritmi e pseudocodifica
Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie
Lezione 8 Struct e qsort
Lezione 8 Struct e qsort Rossano Venturini [email protected] Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 3 QuickSort strambo Modificare il Quicksort
Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal
Algoritmi, Strutture Dati e Programmi : Programmazione in Pascal Prof. Alberto Postiglione AA 2007-2008 Università degli Studi di Salerno Il Linguaggio di Programmazione Pascal Esistono molti linguaggi
Introduzione al Linguaggio C
Introduzione al Linguaggio C File I/O Daniele Pighin April 2009 Daniele Pighin Introduzione al Linguaggio C 1/15 Outline File e dati Accesso ai file File I/O Daniele Pighin Introduzione al Linguaggio C
Le funzioni, e le istruzioni di input/output
Linguaggio C Le funzioni, e le istruzioni di input/output 1 Funzioni! Sono sottoprogrammi per svolgere un particolare compito! Sequenze di istruzioni (raggruppate tramite le parentesi graffe) alle quali
I puntatori e l allocazione dinamica di memoria
I puntatori e l allocazione dinamica di memoria L allocazione delle variabili Allocazione e rilascio espliciti di memoria Le funzioni malloc e free 2 2006 Politecnico di Torino 1 Allocare = collocare in
Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni
Funzioni Le funzioni Con il termine funzione si intende, in generale, un operatore che, applicato a un insieme di operandi, consente di calcolare un risultato, come avviene anche per una funzione matematica
Esercizi C su array e matrici
Politecnico di Milano Esercizi C su array e matrici Massimo, media e varianza,, ordinamento, ricerca e merge, matrice simmetrica, puntatori Array Array o vettore Composto da una serie di celle int vett[4]
Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol.
Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione prof. Lorenzo Porcelli e mail: [email protected] sito: users.iol.it/genna18 Risoluzione di un problema Dato
Fondamenti di Informatica
Fondamenti di Informatica Gestione dei File in MATLAB Prof. Christian Esposito Corso di Laurea in Ingegneria Meccanica e Gestionale (Classe I) A.A. 2016/17 Gestione dei file in MATLAB OUTLINE Caratteristiche
I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore
I puntatori Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore...... L operatore & fornisce l indirizzo di un oggetto: p = &c; assegna a p l indirizzo di c, i.e., p
IL CONCETTO DI FILE. È illecito operare oltre la fine del file.
IL CONCETTO DI FILE Un file è una astrazione fornita dal sistema operativo, il cui scopo è consentire la memorizzazione di informazioni su memoria di massa. Concettualmente, un file è una sequenza di registrazioni
ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa.
3 ITI - a.s. 2007-2008 Compiti di Informatica ESTATE 2008 ARRAY E STRINGHE Scrivere una funzione che carica da tastiera un array di n elementi e lo stampa invertendo il primo elemento con l'ultimo, il
Esercizi. Stringhe. Stringhe Ricerca binaria
Politecnico di Milano Esercizi Stringhe Stringhe Array di caratteri Funzioni: strcpy() strcmp() strlen() char stringaa[10], stringab[10]; strcpy(stringaa, stringab); Copia if (strcmp(stringaa, stringab)
ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C
Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2
Esercitazione 6. Array
Esercitazione 6 Array Arrays Array (o tabella o vettore): è una variabile strutturata in cui è possibile memorizzare un numero fissato di valori tutti dello stesso tipo. Esempio int a[6]; /* dichiarazione
Processore Danilo Dessì. Architettura degli Elaboratori.
Processore 8088 Architettura degli Elaboratori Danilo Dessì [email protected] Subroutine Anche nel linguaggio assemblativo è possibile suddividere un programma in subroutine Per invocare una subroutine
Definizione Allocazione e deallocazione di variabili Allocazione e deallocazione di vettori
Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Meccanica, Elettrica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011
C: panoramica. Violetta Lonati
C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati
Esercizi. La funzione swapint() primo tentativo
Politecnico di Milano Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio di array. #include
Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C
Tipi di dati strutturati e Linguaggio C Record o strutture Il costruttore struct in C Dati strutturati Record Un record o struttura è una struttura dati ottenuta aggregando elementi di tipo diverso che
