Introduzione al Linguaggio C



Documenti analoghi
Gestione dei File. dischi nastri cd

Gestione dei File in C

Matlab: Gestione avanzata dei file

ISTITUTO TECNICO INDUSTRIALE STATALE LA GESTIONE DEI FILE DI TESTO IN C++

Funzioni matlab per la gestione dei file. Informatica B Prof. Morzenti

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it

puntatori Lab. Calc. AA 2007/08 1

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

I file di dati. Unità didattica D1 1

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO V Indice

IL SISTEMA OPERATIVO IL SISTEMA OPERATIVO INTERFACCE TESTUALI INTERFACCE TESTUALI FUNZIONI DEL SISTEMA OPERATIVO INTERFACCE GRAFICHE

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

Access. Microsoft Access. Aprire Access. Aprire Access. Aprire un database. Creare un nuovo database

INTERAZIONE CON L UTENTEL

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Introduzione alla programmazione in C

Alcune regole di base per scrivere un programma in linguaggio C

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Inizializzazione, Assegnamento e Distruzione di Classi

Funzioni. Il modello console. Interfaccia in modalità console

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

Esercizio 1. Esercizio 1

Corso sul linguaggio Java

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE

BOZZA. cin per la comunicazione dal dispositivo di input standard, la tastiera, al programma (stream di input standard)

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Informatica Generale 1 - Esercitazioni Introduzione all uso della command-line shell

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 13 File Binari

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

Il Software. Il software del PC. Il BIOS

La struttura dati ad albero binario

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni

Struttura dati FILE. Concetto di FILE

Introduzione al linguaggio C Gli array

NOZIONI BASE PER ESERCITAZIONI

Introduzione alla. Alessandra Giordani Lunedì 27 febbraio

Protezione. Protezione. Protezione. Obiettivi della protezione

Introduzione. Installare EMAS Logo Generator

ESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 27 Gennaio 2015

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino

Programmare in Java. Olga Scotti

Visualizzazione grafica. dell'output di un programma con GNUplot

Files, File I/O, File Sharing. Franco Maria Nardini

Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio

Dynamic Linking. Introduzione Creazione di una libreria dinamica Uso di una libreria dinamica

MANUALE PORTALE UTENTE IMPRENDITORE

Introduzione all uso di Eclipse

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Editor vi. Editor vi

I puntatori e l allocazione dinamica di memoria

Compilatore risorse display grafico LCD serie IEC-line

RICERCA DI UN ELEMENTO

Manuale Terminal Manager 2.0

Fondamenti di Informatica T-1 CdS Ingegneria Informatica a.a. 2011/2012. Introduzione a Visual Studio 2005/2008/2010

Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda

Al giorno d oggi, i sistemi per la gestione di database

BARCODE. Gestione Codici a Barre. Release 4.90 Manuale Operativo

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

Cos è ACCESS? E un programma di gestione di database (DBMS) Access offre: un ambiente user frendly da usare (ambiente grafico)

PROGRAMMI UTENTE INTERPRETE COMANDI FILE SYSTEM GESTIONE DELLE PERIFERICHE GESTIONE DELLA MEMORIA GESTIONE DEI PROCESSI (NUCLEO) HARDWARE

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Sistemi Mobili e Wireless Android - Dati persistenti: SQLite

Codifica: dal diagramma a blocchi al linguaggio C++

Università degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella

Il sistema operativo UNIX/Linux. Gli script di shell

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

Il menu File contiene tutti i comandi relativi alle seguenti operazioni:

STAMPA UNIONE DI WORD

EXCEL FUNZIONI PRINCIPALI

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50

Software di base. Corso di Fondamenti di Informatica

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

MANUALE EDICOLA 04.05

Manuale Utente CONSERVAZIONE A NORMA Caricamento Singolo & Massivo electronic Document Keeper

Le stringhe. Le stringhe

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

Microsoft Access. Microsoft Access

Architettura dei calcolatori e sistemi operativi. Assemblatore e Collegatore (Linker) Capitolo 2 P&H Appendice 2 P&H

Linguaggio C. Fondamenti. Struttura di un programma.

Per chi ha la Virtual Machine: avviare Grass da terminale, andando su Applicazioni Accessori Terminale e scrivere grass

Il SOFTWARE DI BASE (o SOFTWARE DI SISTEMA)

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante

Dispensa di Fondamenti di Informatica. Architettura di un calcolatore

Esame di Informatica CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO. Facoltà di Scienze Motorie

Transcript:

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 2/15

Outline File e dati Accesso ai file File I/O Daniele Pighin Introduzione al Linguaggio C 3/15

Cosa é un file Un file é un astrazione logica fornita dal sistema operativo che consente di memorizzare in modo permanente una sequenza ordinata di byte La semantica di un file dipende da come se ne interpreta un contenuto La semantica delle operazioni di scrittura sul file deve essere rispettata dalle operazioni di lettura - Esempio: se quando scriviamo un file ci mettiamo una lista di numeri telefonici, quando lo leggiamo non possiamo interpretare quei valori come se fossero date Due principali tipologie di file: - File di testo: contengono solo caratteri ASCII (o Unicode) - File binari: contengono anche (principalmente) caratteri non stampabili Daniele Pighin Introduzione al Linguaggio C 4/15

Utilitá dei file Alcuni usi dei file: Per salvare impostazioni e configurazioni (es: sfondo del desktop) Per immettere un gran numero di parametri in un problema di calcolo Per memorizzare permanentemente il risultato di un elaborazione (es: un programma che calcola tutti i numeri primi compresi in un intervallo) e consentire agli utenti di esaminarlo Per caricare una collezione di dati su cui eseguire un elaborazione (es: calcolare la deviazione standard di una distribuzione di milioni di valori) Per interagire con altri programmi (l output di un programma puó essere l input di un altro) Per consentire agli utenti di scambiarsi informazioni (es: un documento Word o un file di dati) Daniele Pighin Introduzione al Linguaggio C 5/15

Outline File e dati Accesso ai file File I/O Daniele Pighin Introduzione al Linguaggio C 6/15

Utilizzo di file in C L utilizzo di un file passa attraverso 3 fasi principali: Apertura: Si comunica al sistema operativo su quale file si vuole agire e si specifica se si intende leggere e/o scrivere dal file. Il sistema operativo verifica che la nostra richiesta sia valida e prepara le risorse necessarie Lettura/Scrittura: Si leggono/scrivono dati dal/sul file Chiusura: Si comunica al sistema operativo che non abbiamo piú bisogno di leggere/scrivere dal file. Il sistema operativo rilascia le risorse precedentemente allocate Le funzioni e i tipi di dato necessari a manipolare file in C sono dichiarati in stdio.h Daniele Pighin Introduzione al Linguaggio C 7/15

Apertura di un file Per aprire un file si invoca la funzione FILE* fopen(const char* path, const char* mode) I due parametri sono stringhe: path é il path, assoluto oppure relativo alla directory da cui eseguiamo il programma, che identifica il file che vogliamo aprire mode indica che tipo di accesso ci interessa La funzione restituisce un puntatore di tipo FILE*, che rappresenta le risorse allocate dal sistema operativo per gestire il file che abbiamo aperto Se l apertura fallisce, la funzione ritorna NULL Tra le altre cose, un oggetto FILE contiene un cursore che tiene traccia dell attuale posizione all interno del file. Ogni operazione di lettura/scrittura avanza la posizione del cursore Daniele Pighin Introduzione al Linguaggio C 8/15

Modalitá di apertura di un file Il parametro mode puó assumere i seguenti valori: r Apre il file in sola lettura (non sará possibile scrivere sul file) w Apre il file in sola scrittura (non sará possibile leggere dal file). Se il file giá esiste, viene troncato a lunghezza 0, altrimenti viene creato un nuovo file a Apre in modalitá append, cioé in sola scrittura ma senza troncamento (le cose che scriviamo vengono aggiunte alla fine del file) r+ Apre un file giá esistente in lettura/scrittura. Non c é troncamento. Il cursore viene posizionato all inizio del file w+ Come "w", ma é anche possibile leggere dal file a+ Come "a", ma anche possibile leggere dal file. Tutte le operazioni di scrittura avvengono alla fine del file Daniele Pighin Introduzione al Linguaggio C 9/15

Chiusura di un file La funzione int fclose(file* f) é usata per chiudere il file descritto dal puntatore f La funzione ritorna: 0 Se il file é stato chiuso correttamente EOF End Of File, una costante intera definita in stdio.h, se c é stato qualche errore Quando viene eseguita l istruzione return della funzione main, tutti i file aperti vengono automaticamente chiusi In caso di errore, un programma potrebbe uscire in modo inatteso, ed in questo caso alcune delle operazioni di scrittura su file richieste potrebbero non essere eseguite a causa della bufferizzazione é importante chiudere sempre i file aperti in scrittura quando non si usano piú! Daniele Pighin Introduzione al Linguaggio C 10/15

Esempio 1 #i n c l u d e <s t d i o. h> 2 i n t main ( i n t argc, char a r g v [ ] ) { 3 i f ( a r g c!= 2) { 4 p r i n t f ( I s t r u z i o n i : %s <nome f i l e d i i n p u t >\n, a r g v [ 0 ] ) ; 5 r e t u r n 1 ; 6 } 7 char f i l e n a m e = a r g v [ 1 ] ; 8 FILE m y f i l e = f o p e n ( f i l e n a m e, r ) ; / APERTURA / 9 i f ( m y f i l e == NULL) { 10 p r i n t f ( I m p o s s i b i l e a p r i r e i l f i l e %s \n, f i l e n a m e ) ; 11 r e t u r n 1 ; 12 } 13 / LETTURA/SCRITTURA / 14... // i l f i l e é s t a t o a p e r t o c o r r e t t a m e n t e, f a c c i q u a l c o s a 15 i f ( f c l o s e ( m y f i l e )!= 0) { / CHIUSURA / 16 p r i n t f ( E r r o r e d u r a n t e l a c h i u s a r a d e l f i l e \n ) ; 17 r e t u r n 1 ; 18 } 19 r e t u r n 0 ; 20 } Daniele Pighin Introduzione al Linguaggio C 11/15

Outline File e dati Accesso ai file File I/O Daniele Pighin Introduzione al Linguaggio C 12/15

Standard streams e file Quando includiamo stdio.h in un programma, automaticamente abbiamo disponibili tre simboli di tipo FILE*: stdin L input stream del programma, aperto in sola lettura stdout L output stream del programma, aperto in sola scrittura stderrr L error stream del programma, aperto in sola scrittra Unix utilizza l astrazione del file per rappresentare tutto ció su/da cui si possano scrivere/leggere dati In un programma lanciato all interno di un terminale a riga di comando, lo standard input é un file fittizio che contiene tutti i caratteri immessi attraverso la tastiera, mentre lo standard output e lo standard error sono la sequenza di caratteri visualizzati nel terminale Invocare printf equivale a scrivere sul file rappresentato da stdout Invocare scanf equivale a leggere dal file rappresentato da stdin Daniele Pighin Introduzione al Linguaggio C 13/15

Lettura e scrittura da file Per leggere/scrivere un file é possibile usare le funzioni - int fprintf(file* file, const char* template,...); - int fscanf(file* file, const char* template,...); printf e scanf sono due versioni semplificate di queste funzioni in cui il primo argomento é fissato e vale, rispettivamente, stdout e stdin Le due funzioni sono equivalenti a printf e scanf, ma prendono un argomento aggiuntivo (il primo) che é il file su/da cui scrivere/leggere Daniele Pighin Introduzione al Linguaggio C 14/15

Esercizio Scrivere un programma che accetta due argomenti da riga di comando corrispondendi a due nomi di file. Il primo file viene aperto in sola lettura, e si assume essere composto di tre righe: La prima riga contiene un numero intero n 256, che indica una dimensionalitá La seconda e la terza riga contengono ciascuna n valori double, e definiscono le coordinate di due vettori n-dimensionali Il secondo file viene aperto in scrittura. In questo file, il programma scrive, su righe diverse: La norma del primo vettore La norma del secondo vettore Il prodotto scalare tra i due vettori Il prodotto scalare tra i due vettori normalizzati Daniele Pighin Introduzione al Linguaggio C 15/15