Input/output in C e in C++

Размер: px
Начинать показ со страницы:

Download "Input/output in C e in C++"

Транскрипт

1 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 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 1

2 Nota di Copyright Questo insieme di trasparenze (detto nel seguito slide) è protetto dalle leggi sul copyright e dalle disposizioni dei trattati internazionali. Il titolo ed i copyright relativi alle slides (ivi inclusi, ma non limitatamente, ogni immagine, fotografia, animazione, video, audio, musica e testo) sono di proprietà degli autori prof. Pier Luca Montessoro e ing. Davide Pierattoni, Università degli Studi di Udine. Le slide possono essere riprodotte ed utilizzate liberamente dagli istituti di ricerca, scolastici ed universitari afferenti al Ministero della Pubblica Istruzione e al Ministero dell Università e Ricerca Scientifica e Tecnologica, per scopi istituzionali, non a fine di lucro. In tal caso non è richiesta alcuna autorizzazione. Ogni altro utilizzo o riproduzione (ivi incluse, ma non limitatamente, le riproduzioni su supporti magnetici, su reti di calcolatori e stampe) in toto o in parte è vietata, se non esplicitamente autorizzata per iscritto, a priori, da parte degli autori. L informazione contenuta in queste slide è ritenuta essere accurata alla data della pubblicazione. Essa è fornita per scopi meramente didattici e non per essere utilizzata in progetti di impianti, prodotti, reti, ecc. In ogni caso essa è soggetta a cambiamenti senza preavviso. Gli autori non assumono alcuna responsabilità per il contenuto di queste slide (ivi incluse, ma non limitatamente, la correttezza, completezza, applicabilità, aggiornamento dell informazione). In ogni caso non può essere dichiarata conformità all informazione contenuta in queste slide. In ogni caso questa nota di copyright e il suo richiamo in calce ad ogni slide non devono mai essere rimossi e devono essere riportati anche in utilizzi parziali Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 2

3 Input/output standard In C, l header file necessario per effettuare l input da tastiera e l output sul monitor è stdio.h: #include <stdio.h> In C++ le stesse operazioni richiedono l header file iostream.h: #include <iostream.h> 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 3

4 Lettura di dati da tastiera Per leggere da tastiera un intero i, un numero reale z oppure una stringa str, il C offre la funzione scanf (di input formattato): scanf ("%d %f %s", &i, &z, str); Il C++ permette simili operazioni in modo più semplice, interpretando automaticamente il tipo del dato a partire da quello della variabile in cui il dato viene scritto: cin >> i >> z >> str; 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 4

5 Stampa sul monitor Per stampare sul monitor (standard output) un intero i, un numero reale z oppure una stringa str, in C si usa la funzione printf (di output formattato): printf ("%d %f %s", i, z, str); In C++ si utilizza la funzione cout, che interpreta automaticamente il tipo del dato a partire da quello della variabile da stampare: cout << i << z << str; 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 5

6 Lettura di caratteri La lettura di un carattere singolo, spazi inclusi, si effettua in C con la funzione getchar(): char ch; ch = getchar(); Il corrispondente in C++ è la funzione cin.get(): ch = cin.get(); 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 6

7 Scrittura con formattazione La stampa sul monitor di un intero i in ottale o in esadecimale avviene in C con opportuni caratteri di conversione applicati alla funzione printf(): printf ("%o %h", i, i); La stessa formattazione si ottiene in C++ con la sequenza: cout << oct << i << hex << i; 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 7

8 Scrittura di numeri reali In C la stampa di un numero reale z può essere effettuata specificando negli argomenti di printf() il numero di caratteri totali e il numero di cifre decimali desiderati: printf ("%10.4f", z); /* stampa z su 10 caratteri con 4 cifre decimali */ In C++ simili formattazioni, con risultato generalmente diverso, si ottengono ad esempio con: cout << cout.precision(4) << z; 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 8

9 Input e output sui file In C, l header file necessario per effettuare l input e l output sui file è stdio.h: #include <stdio.h> In C++ le stesse operazioni richiedono in aggiunta a iostream.h l header file specifico fstream.h: #include <iostream.h> #include <fstream.h> 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 9

10 File handler La dichiarazione di un file handler (puntatore ad una struttura FILE) in un programma C è: FILE *f_input, *f_output; /*due handler, uno per il file di input e l altro per il file di output */ In C++ gli handler di file su disco si dichiarano invece come: fstream f_input, f_output; 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 10

11 Apertura dei file in lettura Per aprire il file dati_in.txt in lettura e gestire la condizione di errore in mancanza del file stesso, il C prevede l uso della funzione fopen: if ((f_input = fopen("dati_in.txt", "r")) == NULL) { /* istruzioni da eseguire in caso di errore (es. nel caso di file inesistente) */ } 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 11

12 Apertura dei file in lettura Per aprire lo stesso file dati_in.txt in lettura, una delle possibili sequenze di istruzioni corrispondenti in C++ è la seguente: f_input.open ("dati_in.txt", ios::in); if (f_input.fail()) { } // istruzioni da eseguire in caso di // errore 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 12

13 Apertura dei file in scrittura Per aprire il file dati_out.txt in scrittura, cancellando un eventuale versione preesistente del file su disco, il C prevede istruzioni del tipo: if ((f_output = { } fopen("dati_out.txt", "w")) == NULL) /* istruzioni da eseguire in caso di errore*/ 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 13

14 Apertura dei file in scrittura In C++ lo stesso risultato si ha con istruzioni del tipo: f_output.open ("dati_out.txt", ios::out); if (f_output.fail()) { } // istruzioni da eseguire in caso di // errore 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 14

15 Apertura dei file in scrittura Per aprire il file dati_out.txt in scrittura, iniziando però dalla fine del file se esso è già presente su disco (append), il C utilizza ancora la funzione fopen(): if ((f_output = { } fopen("dati_out.txt", "a")) == NULL) /* istruzioni da eseguire in caso di errore*/ 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 15

16 Apertura dei file in scrittura In C++ la scrittura in modalità append si ha con istruzioni del tipo: f_output.open ("dati_out.txt", ios::app); if (f_output.fail()) { } // istruzioni da eseguire in caso di // errore 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 16

17 Lettura di caratteri da file Per leggere dei caratteri (spazi inclusi) da un file dati_in.txt, il C impiega la funzione fgetc(), che restituisce il valore EOF (-1) quando si raggiunge la fine del file: char ch; FILE *f_input; if ((f_input = fopen("dati_in.txt", "r"))!= NULL) while ((ch = fgetc(f_input))!= EOF) { Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 17

18 Lettura di caratteri da file Il C++ utilizza invece la funzione get()della classe fstream, che restituisce il valore zero quando si raggiunge la fine del file: char ch; fstream f_input; f_input.open("dati_in.txt", ios::in); if (f_input.fail()) {... } while ((ch = f_input.get())!= 0) { Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 18

19 Lettura da file con fomattazione Per leggere da un file dati_in.txt un intero i, un reale z e una stringa str, in C si utilizza la funzione fscanf(), che consente di specificare il tipo del dato letto e salvarne il valore in un opportuna variabile: while (fscanf (f_input, "%d %f %s", &i, &z, str)!= EOF) {... } 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 19

20 Lettura da file con fomattazione Un risultato equivalente si ha in C++ con costrutti del tipo: if (f_input >> i >> z >> str) { // se l espressione restituisce il // valore zero, allora il file // è finito... } 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 20

21 Scrittura su file con formattazione Per scrivere su un file dati_out.txt un intero i, un reale z e una stringa str, in C si usa la funzione fprintf(), specificando negli argomenti il tipo delle variabili il cui valore verrà scritto nel file: fprintf (f_output, "%d %f %s", i, z, str); In C++ lo stesso risultato si ottiene con la sintassi: f_output << i << z << str; 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 21

22 Chiusura di un file Per chiudere un file precedentemente aperto da un programma C con fopen(), si deve usare la funzione fclose(): f_input = fopen("dati_in.txt", "r"); f_output = fopen("dati_out.txt", "w");... fclose(f_input); fclose(f_output); 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 22

23 Chiusura di un file In C++ le istruzioni corrispondenti sono: f_input.open("dati_in.txt", ios::in); f_output.open("dati_out.txt", ios::out);... f_input.close(); f_output.close(); 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 23

Codifica dei numeri interi positivi e negativi

Codifica dei numeri interi positivi e negativi FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine Codifica dei numeri interi positivi e negativi 2000 Pier Luca Montessoro (si veda la nota di copyright

Подробнее

Linguaggio C Struct e union

Linguaggio C Struct e union FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Linguaggio C Struct e union 2001 Pier Luca Montessoro - Davide Pierattoni

Подробнее

Introduzione alla programmazione strutturata

Introduzione alla programmazione strutturata FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Prof. ELIO TOPPANO Facoltà di Ingegneria Università degli Studi di Udine Introduzione alla programmazione strutturata 2001 Pier Luca Montessoro, Elio

Подробнее

Scrivere il software. Scrivere il software. Interprete. Compilatore e linker. Fondamenti di Informatica

Scrivere il software. Scrivere il software. Interprete. Compilatore e linker. Fondamenti di Informatica FODAMETI DI IFORMATICA Prof. PIER LUCA MOTESSORO Prof. ELIO TOPPAO Facoltà di Ingegneria Università degli Studi di Udine Introduzione alla programmazione strutturata 2001 Pier Luca Montessoro, Elio Toppano

Подробнее

FONDAMENTI DI INFORMATICA. Prof. PIER LUCA MONTESSORO. Facoltà di Ingegneria Università degli Studi di Udine. Compressione audio

FONDAMENTI DI INFORMATICA. Prof. PIER LUCA MONTESSORO. Facoltà di Ingegneria Università degli Studi di Udine. Compressione audio FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine Compressione audio 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 1

Подробнее

La programmazione in linguaggio C

La programmazione in linguaggio C FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine La programmazione in linguaggio C 2001 Pier Luca Montessoro - Davide Pierattoni

Подробнее

Codifica dei segnali audio

Codifica dei segnali audio FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine Codifica dei segnali audio 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide

Подробнее

Tecniche di compressione senza perdita

Tecniche di compressione senza perdita FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine Tecniche di compressione senza perdita 2000 Pier Luca Montessoro (si veda la nota di copyright

Подробнее

IL CABLAGGIO STRUTTURATO DI CATEGORIA 6

IL CABLAGGIO STRUTTURATO DI CATEGORIA 6 IL CABLAGGIO STRUTTURATO DI CATEGORIA 6 21 maggio 2002 PIER LUCA MONTESSORO Dip. di Ingegneria Elettrica Gestionale e Meccanica Università degli Studi di Udine in collaborazione con 2002 Pier Luca Montessoro

Подробнее

Linguaggio C Espressioni e operatori

Linguaggio C Espressioni e operatori FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing.DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Linguaggio C Espressioni e operatori 2001 Pier Luca Montessoro - Davide

Подробнее

Sicurezza applicata in rete

Sicurezza applicata in rete Nota di Copyright RETI DI CALCOLATORI II Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI acoltà di Ingegneria Università degli Studi di Udine Questo insieme di trasparenze (detto nel seguito slide) è

Подробнее

RETI DI CALCOLATORI II

RETI DI CALCOLATORI II RETI DI CALCOLATORI II Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine 2010 Pier Luca Montessoro (si veda la nota a pagina 2) 1 Nota di Copyright

Подробнее

Metro VLAN Switch e standard 802.1ad

Metro VLAN Switch e standard 802.1ad Metro VLAN Switch e standard 802.1ad Pietro Nicoletti piero[]studioreti.it VLAN-Metro-802.1ad - 1 P. Nicoletti: si veda nota a pag. 2 Nota di Copyright Questo insieme di trasparenze (detto nel seguito

Подробнее

Memoria cache, interrupt e DMA

Memoria cache, interrupt e DMA FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine Memoria cache, interrupt e DMA 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide

Подробнее

RETI DI CALCOLATORI E APPLICAZIONI TELEMATICHE

RETI DI CALCOLATORI E APPLICAZIONI TELEMATICHE RETI DI CALCOLATORI E APPLICAZIONI TELEMATICHE Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine 1999 Pier Luca Montessoro (si veda la nota a pagina 2) 1 Nota di Copyright

Подробнее

Progettazione delle dorsali in fibra ottica

Progettazione delle dorsali in fibra ottica Progettazione delle dorsali in fibra ottica Mario Baldi Politecnico di Torino [email protected] staff.polito.it/mario.baldi Nota di Copyright Questo insieme di trasparenze (detto nel seguito slide)

Подробнее

LIBRERIE STANDARD in C. LIBRERIE STANDARD in C

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

Подробнее

HDLC e PPP. Silvano GAI

HDLC e PPP. Silvano GAI HDLC e PPP Silvano GAI [email protected] http://www.polito.it/~silvano HDLC_PPP - 1 Copyright: si veda nota a pag. 2 Nota di Copyright Questo insieme di trasparenze (detto nel seguito slides) è protetto

Подробнее

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

Подробнее