Standard I/O. Franco Maria Nardini

Documenti analoghi
Capitolo 5 -- Stevens

Gestione dei file. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico

Files, File I/O. Franco Maria Nardini

Laboratorio di Sistemi Operativi primavera 2009

I files in C. A cura del prof. Ghezzi

Laboratorio di Sistemi Operativi Marzo-Giugno 2008 Matricole congrue 0 mod 3

Gestione dei File. Credits Prof. Campi

Premessa. Input /output e gestione dei file. I file e gli stream. Il puntatore al file. 21. I FILE NEL LINGUAGGIO C Versione 1.

Perchè i files? Realizzano la persistenza dei dati. Sono delle strutture di dati sequenziali. dati che sopravvivono all esecuzione del programma

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

Streams e disk files

Files in C endofile

Corso di Informatica A.A

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

GESTIONE DEI FILE IN C. Docente: Giorgio Giacinto AA 2008/2009

Input/Output. Lettura e scrittura Caratteri e Stringhe: Terminale e file. Input/output. caratteri stringhe formattato ascii binari

Il linguaggio C. Breve panoramica su stdio.h

Laboratorio di Programmazione

I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002

FONDAMENTI DI INFORMATICA. Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI. Facoltà di Ingegneria Università degli Studi di Udine

Gestione dei file in C

Gestione dei file. Linguaggio ANSI C Input/Output - 13

I files (archivi) Il C definisce in stdio.h tre file aperti automaticamente: stdin, stdout e stderr.! Sono ad accesso sequenziale diretto

Introduzione al C. Stream e disk file

Gestione dei file in C

Linguaggio C: i file

Laboratorio di Informatica Ingegneria Clinica Lezione 30/11/2011

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 6 Marzo 2016

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 21 Maggio 2014

Indice. La gestione dei file in C e gli stream. Apertura e chiusura di un file. Operazioni sui file. Accesso sequenziale e non sequenziale

Indice. La gestione dei file in C e gli stream. Apertura e chiusura di un file. Operazioni sui file. Accesso sequenziale e non sequenziale

Settimana n.12. Obiettivi File!di!testo. Contenuti Concetto!di!file!e!funzioni! fopen/fclose Funzioni!fgets+sscanf Approfondimenti!su!printf! e!

Laboratorio di Sistemi Operativi Marzo-Giugno 2008 Matricole congrue 0 mod 3

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 15 Maggio 2015

Laboratorio di Sistemi Operativi primavera 2009

Input / Output. Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard

File binari e file di testo

Input/Output. Console e File.

GESTIONE DEI FILE IN C

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

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

Formattazione avanzata. Modificatori di formato in output Modificatori di formato in input Stream predefiniti

INFORMATICA. I file. File. File. File

Input / Output. Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard

C: primi elementi. Lezione 4

Sulla libreria standard, II. Manipolare input e output standard

Cenno al file system di base di Linux

Operazioni su file di caratteri

Formattazione avanzata. I/O Avanzato e File. Formattazione dell output. Formattazione avanzata. Forma completa degli specificatori

File e puntatori a file

Compendio sottoinsieme del C++ a comune col C. (Libreria standard, Input/Output, Costanti, Dichiarazioni e typedef, Memoria Dinamica)

Input/output console file caratteri stringhe formattato ascii binari

Capitolo 11 Elaborazione di file

ELEMENTI DI INFORMATICA. Linguaggio C

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 15 Maggio 2013

Il File-System. I file in ambiente Linux Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

I File. Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa.

I/O INTERATTIVO. scanf: quello che è indispensabile sapere printf: quello che è utile sapere

Prova Finale. Algoritmi e Strutture Dati 2016 / 2017

Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 9 File

Lezione V Fondamenti di Ingresso/Uscita

Corso di Reti di Calcolatori T

1

Esercitazione 4. Gestione dei file in Unix

Introduzione. L elaborazione dei files in C. Elaborazione dei files (1) Elaborazione dei files (2) D.D. cap. 11+ pp K.P. pp.

Introduzione alla. Alessandra Giordani Lunedì 11 marzo

La gestione dell'errore

Corso di Fondamenti di Programmazione canale E-O. Introduzione. Elaborazione dei files (2)

GESTIONE DEI FILE. File come tipo di dati

Corso di Informatica A.A

Input / Output. Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard

Esercitazioni Fondamenti di Informatica

Concetto di stream. c i a o \0. c i a o \0. c i a o \0

Sistemi Operativi (M. Cesati)

Gestione di files Motivazioni

Introduzione a. Funzioni di Ingresso e Uscita. Compilazione

Processore Danilo Dessì. Architettura degli Elaboratori.

Corso sul linguaggio Java

Lezione 7: Funzioni e gestione dei File

LIBRERIE STANDARD in C Le librerie standard

L accesso ai dispositivi esterni (tastiera, monitor, file,...) viene gestito mediante canali di comunicazione.

LIBRERIE STANDARD in C

La gestione dei file in C

Sommario. Manipolazione sequenziale di file in C Funzioni di base per I/O di file

Scrittura formattata - printf

Laboratorio di Algoritmi e Strutture Dati

Architettura dei calcolatori e sistemi operativi. Input Output. IO 3 Device driver

D Alcune funzioni della libreria standard del C

Introduzione al C. Unità 9 File. D. Bloisi, S. Peluso, A. Pennisi, S. Salza

File. Unità 8. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi

LIBRERIE STANDARD in C. LIBRERIE STANDARD in C

Caratteri e stringhe

Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' a p e \0

caratteri, immagini, suoni, ecc.

Filtri e pipeline. qualsiasi comando unix ha a disposizione 3 file con cui comunicare con il resto del sistema: standard input in ingresso

Transcript:

Standard I/O Franco Maria Nardini

Standard I/O Library

Standard I/O Library Definita da ISO C

Standard I/O Library Definita da ISO C implementata non solo in sistemi operativi UNIX

Standard I/O Library Definita da ISO C implementata non solo in sistemi operativi UNIX Gestisce

Standard I/O Library Definita da ISO C implementata non solo in sistemi operativi UNIX Gestisce l allocazione del buffer di I/O

Standard I/O Library Definita da ISO C implementata non solo in sistemi operativi UNIX Gestisce l allocazione del buffer di I/O l I/O in blocchi ottimizzati senza bisogno di preoccuparsi di ciò

Standard I/O Library Definita da ISO C implementata non solo in sistemi operativi UNIX Gestisce l allocazione del buffer di I/O l I/O in blocchi ottimizzati senza bisogno di preoccuparsi di ciò Scritta da Ritchie nel 1975

Standard I/O Library Definita da ISO C implementata non solo in sistemi operativi UNIX Gestisce l allocazione del buffer di I/O l I/O in blocchi ottimizzati senza bisogno di preoccuparsi di ciò Scritta da Ritchie nel 1975 pochissime modifiche da quel design iniziale in 40 anni

Idea alla base

Idea alla base L I/O visto finora è centrato sul concetto di file descriptor

Idea alla base L I/O visto finora è centrato sul concetto di file descriptor dall apertura di un file si ha un file descriptor che viene usato per tutte le successive operazioni

Idea alla base L I/O visto finora è centrato sul concetto di file descriptor dall apertura di un file si ha un file descriptor che viene usato per tutte le successive operazioni La libreria di standard I/O è:

Idea alla base L I/O visto finora è centrato sul concetto di file descriptor dall apertura di un file si ha un file descriptor che viene usato per tutte le successive operazioni La libreria di standard I/O è: centrata sul concetto di stream (?)

Idea alla base L I/O visto finora è centrato sul concetto di file descriptor dall apertura di un file si ha un file descriptor che viene usato per tutte le successive operazioni La libreria di standard I/O è: centrata sul concetto di stream (?) quando si apre o crea un file, stiamo associando uno stream al file

Idea alla base

Idea alla base Gestisce single-byte (ASCII) e multibyte (?) character sets

Idea alla base Gestisce single-byte (ASCII) e multibyte (?) character sets no orientamento dello stream alla creazione

Idea alla base Gestisce single-byte (ASCII) e multibyte (?) character sets no orientamento dello stream alla creazione l uso di funzioni di I/O multibyte su stream non orientato settano l orientamento

Buffering

Buffering la libreria di standard I/O introduce buffering

Buffering la libreria di standard I/O introduce buffering si vuol usare il minimo numero di chiamate a read e write

Buffering la libreria di standard I/O introduce buffering si vuol usare il minimo numero di chiamate a read e write differenziato per stream

Tre tipi di buffering

Tre tipi di buffering fully buffered: l I/O è effettivamente fatto quando lo standard I/ O buffer è pieno.

Tre tipi di buffering fully buffered: l I/O è effettivamente fatto quando lo standard I/ O buffer è pieno. I/O su disco è generalmente fully buffered.

Tre tipi di buffering fully buffered: l I/O è effettivamente fatto quando lo standard I/ O buffer è pieno. I/O su disco è generalmente fully buffered. Il buffer è creato con una malloc la prima volta che lo stream è usato

Tre tipi di buffering fully buffered: l I/O è effettivamente fatto quando lo standard I/ O buffer è pieno. I/O su disco è generalmente fully buffered. Il buffer è creato con una malloc la prima volta che lo stream è usato flush è il termine con cui si indica lo svuotamento del buffer:

Tre tipi di buffering fully buffered: l I/O è effettivamente fatto quando lo standard I/ O buffer è pieno. I/O su disco è generalmente fully buffered. Il buffer è creato con una malloc la prima volta che lo stream è usato flush è il termine con cui si indica lo svuotamento del buffer: automatico, quando il buffer è pieno

Tre tipi di buffering fully buffered: l I/O è effettivamente fatto quando lo standard I/ O buffer è pieno. I/O su disco è generalmente fully buffered. Il buffer è creato con una malloc la prima volta che lo stream è usato flush è il termine con cui si indica lo svuotamento del buffer: automatico, quando il buffer è pieno manuale, tramite fflush()

Tre tipi di buffering

Tre tipi di buffering line buffered: l I/O è effettivamente fatto quando si incontra un \n.

Tre tipi di buffering line buffered: l I/O è effettivamente fatto quando si incontra un \n. ciò consente di fare I/O di caratteri (fputc()) sapendo che il vero I/O ci sarà alla scrittura di un \n.

Tre tipi di buffering line buffered: l I/O è effettivamente fatto quando si incontra un \n. ciò consente di fare I/O di caratteri (fputc()) sapendo che il vero I/O ci sarà alla scrittura di un \n. Attenzione!

Tre tipi di buffering line buffered: l I/O è effettivamente fatto quando si incontra un \n. ciò consente di fare I/O di caratteri (fputc()) sapendo che il vero I/O ci sarà alla scrittura di un \n. Attenzione! dimensione del buffer è fissata: I/O può avvenire prima del \n in caso di linee lunghe.

Tre tipi di buffering line buffered: l I/O è effettivamente fatto quando si incontra un \n. ciò consente di fare I/O di caratteri (fputc()) sapendo che il vero I/O ci sarà alla scrittura di un \n. Attenzione! dimensione del buffer è fissata: I/O può avvenire prima del \n in caso di linee lunghe. nel momento in cui si richiede input da uno stream line buffered:

Tre tipi di buffering line buffered: l I/O è effettivamente fatto quando si incontra un \n. ciò consente di fare I/O di caratteri (fputc()) sapendo che il vero I/O ci sarà alla scrittura di un \n. Attenzione! dimensione del buffer è fissata: I/O può avvenire prima del \n in caso di linee lunghe. nel momento in cui si richiede input da uno stream line buffered: tutti gli stream line buffered in output sono flushati

Tre tipi di buffering

Tre tipi di buffering unbuffered: nessun buffer associato.

Tre tipi di buffering unbuffered: nessun buffer associato. 10 caratteri su uno stream unbuffered escono il prima possibile

Tre tipi di buffering unbuffered: nessun buffer associato. 10 caratteri su uno stream unbuffered escono il prima possibile STDERR è generalmente unbuffered (?)

Buffering

ISO C richiede Buffering

Buffering ISO C richiede STDIN e STDOUT sono fully buffered

Buffering ISO C richiede STDIN e STDOUT sono fully buffered se non riferiscono a device interattivi (terminale)

Buffering ISO C richiede STDIN e STDOUT sono fully buffered se non riferiscono a device interattivi (terminale) STDERR mai fully buffered

Buffering ISO C richiede STDIN e STDOUT sono fully buffered se non riferiscono a device interattivi (terminale) STDERR mai fully buffered Le principali implementazioni:

Buffering ISO C richiede STDIN e STDOUT sono fully buffered se non riferiscono a device interattivi (terminale) STDERR mai fully buffered Le principali implementazioni: STDIN e STDOUT sono line buffered se riferiscono a device interattivo, altrimenti fully buffered

Buffering ISO C richiede STDIN e STDOUT sono fully buffered se non riferiscono a device interattivi (terminale) STDERR mai fully buffered Le principali implementazioni: STDIN e STDOUT sono line buffered se riferiscono a device interattivo, altrimenti fully buffered STDERR sempre unbuffered

Apertura

Apertura

Flush e chiusura

Lettura e scrittura

Lettura e scrittura Si può interagire con tre tipi di I/O non formattato:

Lettura e scrittura Si può interagire con tre tipi di I/O non formattato: I/O di un carattere alla volta

Lettura e scrittura Si può interagire con tre tipi di I/O non formattato: I/O di un carattere alla volta I/O di una riga alla volta

Lettura e scrittura Si può interagire con tre tipi di I/O non formattato: I/O di un carattere alla volta I/O di una riga alla volta I/O diretto

Lettura per carattere

Lettura per carattere ritorno di un unsigned char come int

Lettura per carattere ritorno di un unsigned char come int int necessario per EOF o errori (negativi, -1 spesso)

Lettura per carattere ritorno di un unsigned char come int int necessario per EOF o errori (negativi, -1 spesso) non si confronta il ritorno char con EOF

Lettura per carattere ritorno di un unsigned char come int int necessario per EOF o errori (negativi, -1 spesso) non si confronta il ritorno char con EOF stessi valori per errore o EOF

Come distinguere?

Scrittura per carattere

Lettura per riga

differenze (?) Lettura per riga

Lettura per riga differenze (?) non usare gets(): buffer overflow

Scrittura per riga

Scrittura per riga puts() scrive su STDOUT (con newline)

Scrittura per riga puts() scrive su STDOUT (con newline) fputs() richiede la gestione del newline

Performance

Output Formattato

Conversioni

Input Formattato

Conversioni

Homework Scrivere un programma C che: legge da STDIN numeri (uno per riga) scrive su STDOUT il numero di volte che vede ogni singolo numero scrive in un file a parte, occorrenze uniche dei numeri scrive su un altro file a parte, media, mediana e somma dei numeri letti