D Alcune funzioni della libreria standard del C

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "D Alcune funzioni della libreria standard del C"

Transcript

1 D Alcune funzioni della libreria standard del C In questa appendice forniamo una descrizione dettagliata dei principali sottoprogrammi della libreria standard del C. In particolare, il Paragrafo D.1 tratta le operazioni di Input/Output; il Paragrafo D.2 le operazioni di gestione della memoria, il Paragrafo D.3 le operazioni di gestione delle stringhe e il D.4 raccoglie ulteriori operazioni di vario tipo. D.1 Gestione dell Input/Output La dichiarazione delle seguenti funzioni si trova nel file stdio.h. D.1.1 Lettura di caratteri D int getc (FILE * fp); Ritorna il prossimo carattere (byte) dal flusso fp, convertito in int, quindi sposta l'indicatore di posizione del file in avanti di un carattere. In caso di errore o se si raggiunge la fine del file, ritorna il carattere EOF e setta la variabile globale errno ad un valore opportuno diverso da zero. Di solito è implementata attraverso una macro e perciò è molto efficiente anche se può presentare problemi di effetti collaterali e non può essere usata come parametro di funzione. D int getchar (void); È definita come getc (stdin). È perciò anch'essa, di solito, una macro.

2 304 Appendice D D int fgetc (FILE * fp); Si comporta come getc, ma è implementata attraverso una funzione. È perciò un po più lenta, ma prende meno spazio per l'invocazione e può essere passata come argomento ad una funzione. D.1.2 Scrittura di caratteri D int putc (int c, FILE * fp); Scrive il carattere (byte) c nel flusso fp, nella posizione corrente del file, quindi sposta l'indicatore di posizione del file in avanti di un carattere. In caso di errore (file non aperto o che non può aumentare di dimensione) ritorna il valore EOF e setta la variabile globale errno ad un valore opportuno diverso da zero, altrimenti ritorna il carattere che ha scritto. Di solito è implementata attraverso una macro e perciò è molto efficiente anche se può presentare problemi di effetti collaterali e non può essere usata come parametro di funzione. D int putchar (int c); È definita come putc (c,stdin). È perciò anch'essa, di solito, una macro. D int fputc (int c, FILE * fp); Si comporta come putc, ma è implementata attraverso una funzione. È perciò un po più lenta, ma prende meno spazio per l'invocazione e può essere passata come argomento ad una funzione. D.1.3 Lettura di stringhe D char * gets (char * s); Legge caratteri dallo standard input ponendoli nell'array puntato da s, fino al primo carattere di ritorno a capo o al raggiungimento della fine del file. Il carattere di ritorno a capo è scartato. Viene aggiunto il carattere terminatore di stringa ('\0'), dopo l'ultimo carattere scritto nell'array; in caso di errore o di raggiungimento della fine del file senza alcuna lettura viene ritornato NULL, altrimenti viene ritornato s. La funzione non verifica che la stringa letta non ecceda lo spazio allocato per la stringa s. La funzione fa avanzare l'indicatore di posizione del file di un numero di caratteri pari a quelli effettivamente letti. D char * fgets (char * s, int n, FILE * fp); Legge caratteri dal flusso fp ponendoli nell array puntato da s, fino a che non ha letto n-1 caratteri oppure al raggiungimento di un carattere di ritorno a capo o della fine del file. L eventuale carattere di ritorno a capo è inserito nell array. Viene

3 Alcune funzioni della libreria standard del C 305 aggiunto il carattere terminatore di stringa ('\0'), dopo l'ultimo carattere scritto nell'array; in caso di errore o di raggiungimento della fine del file senza alcuna lettura viene ritornato NULL, altrimenti viene ritornato s. La funzione fa avanzare l'indicatore di posizione del file di un numero di caratteri pari a quelli effettivamente letti. D.1.4 Scrittura di stringhe D int puts (char * s); Scrive caratteri sullo standard output prendendoli dall array puntato da s, fino a che non trova il carattere terminatore di stringa ('\0'), che non viene scritto. A questo punto scrive un carattere di ritorno a capo. In caso di errore viene ritornato EOF, altrimenti restituisce 0. La funzione fa avanzare l'indicatore di posizione del file di un numero di caratteri pari a quelli effettivamente scritti. D int fputs (char * s, FILE * fp); Scrive caratteri sul flusso fp prendendoli dall array puntato da s, fino a che non trova il carattere terminatore di stringa ('\0'), che non viene scritto. Non aggiunge il carattere di ritorno a capo. In caso di errore viene ritornato EOF, altrimenti restituisce 0. La funzione fa avanzare l'indicatore di posizione del file di un numero di caratteri pari a quelli effettivamente scritti. D.1.5 Scrittura formattata D int printf (char * format, ); Consente la scrittura sullo standard output. printf è equivalente a fprintf (stdout, format,...). In caso di errore la funzione ritorna un numero negativo, altrimenti restituisce il numero di caratteri scritti. D int sprintf (char * s, char * format, ); Consente la scrittura formattata su una stringa. In caso di errore la funzione ritorna un numero negativo, altrimenti restituisce il numero di caratteri scritti. D int fprintf (FILE * fp, char * format, ); fprintf permette di scrivere sul flusso fp dei dati formattati seguendo le specifiche fornite nel secondo parametro. In caso di errore la funzione ritorna un numero negativo, altrimenti restituisce il numero di caratteri scritti. format è la stringa di formato e può contenere due tipi di oggetti : caratteri semplici, che sono semplicemente copiati sul flusso fp, e specificatori di conversione (inizianti con il carattere '%') che determinano come devono essere stampati gli argomenti

4 306 Appendice D successivi. La funzione ritorna il numero di caratteri scritti. La funzione fa avanzare l'indicatore di posizione del file di un numero di caratteri pari a quelli effettivamente scritti. Il formato degli specificatori di conversione per la printf è: % [flags] [minima_ampiezza] [precisione] [tipo_di_conversione] minima_ampiezza permette di specificare il numero minimo di caratteri che la stampa dell argomento deve occupare. Se il dato richiede meno caratteri, vengono aggiunti spazi sufficienti alla sinistra del dato per raggiungere l ampiezza specificata. Il flag '-' specifica che gli eventuali spazi devono essere aggiunti alla destra del dato (allineamento a sinistra). Il flag '+' specifica che i numeri positivi devono cominciare con il simbolo '+' che di default viene invece omesso, mentre con il flag ' ' (spazio) si lascia uno spazio bianco. precisione permette di specificare cose diverse a seconda del tipo di conversione e viene trattato quindi separatamente nella prossima tabella. Ha la forma di un numero preceduto dal carattere '.'. I campi minima_ampiezza e precisione possono consistere anche nel carattere '*', che sta ad indicare che il valore numerico da considerare è contenuto nel prossimo argomento. La Tabella D.1 specifica i tipi di conversione. D.1.6 Lettura formattata D int scanf (char * format, ); scanf è equivalente a fscanf (stdin, format,...). In caso di errore la funzione ritorna EOF, altrimenti restituisce il numero di dati letti e convertiti con successo. D int sscanf (char * s, char * format, ); Permette la lettura fromattata da una stringa.,...). In caso di errore la funzione ritorna EOF, altrimenti restituisce il numero di dati letti e convertiti con successo. D int fscanf (FILE * fp, char * format, ); fscanf permette di leggere dei caratteri dal flusso fp, di interpretarli seguendo le specifiche fornite nel secondo parametro e di memorizzare il risultato negli argomenti successivi.,...). In caso di errore la funzione ritorna EOF, altrimenti restituisce il numero di dati letti e convertiti con successo. format è la stringa di formato e può contenere tre tipi di oggetti : caratteri assimilabili allo spazio (spazio, tabulazione e ritorno a capo); caratteri semplici, che devono trovare una corrispondenza nel flusso in ingresso; e specificatori di conversione (inizianti con il

5 Alcune funzioni della libreria standard del C 307 carattere '%') che determinano come devono essere interpretati i caratteri in input e quali valori assegnare ai parametri successivi. Per tutti gli specificatori di conversione (eccetto 'c' e '[') sono automaticamente trascurati tutti i caratteri assimilabili allo spazio, presenti all inizio della stringa da leggere. I caratteri assimilabili allo spazio che si trovano all interno della stringa da leggere fungono da separatori: essi determinano la fine di una conversione e l inizio della successiva. Per gli specificatori di conversione 'c' e '[', non vengono trascurati i caratteri assimilabili allo spazio presenti all inizio nella stringa da leggere. Per ottenere un comportamento simile aquello degli altri specificatori di conversione, basta far precedere a 'c' e '[' un carattere assimilabile allo spazio bianco. Tabella D.1 d, u, o, X f E G c s Tipi di conversione per la funzione printf. L argomento è convertito (e stampato) come un intero con segno decimale (d), oppure decimale senza segno (u), ottale (o), esadecimale (X). Se il tipo di conversione è preceduto da una l il dato viene considerato di tipo (eventualmente unsigned) long, se da un h di tipo (unsigned) short. Il campo precisione indica il numero minimo di cifre da usare; se il dato richiede meno cifre, vengono aggiunti degli zeri sufficienti alla sinistra del dato per raggiungere la precisione specificata. L argomento (di tipo float o double) è convertito in notazione decimale nello stile [-]ddd.dddd dove il numero di cifre dopo la virgola (di default 6) può essere modificato usando il campo precisione. Se il tipo di conversione è preceduto da una l il dato viene considerato di tipo double, se da una L di tipo long double. L argomento (di tipo float o double) è convertito in notazione scientifica nello stile [-]d.dddde±dd dove il numero di cifre dopo la virgola (di default 6) può essere modificato usando il campo precisione. Se il tipo di conversione è preceduto da una l il dato viene considerato di tipo double, se da una L di tipo long double. L argomento (di tipo float o double) è convertito come in E se l esponente è minore di -4 o maggiore della precisione che in questo caso specifica il numero massimo di cifre significative da utilizzare. Se il tipo di conversione è preceduto da una l il dato viene considerato di tipo double, se da una L di tipo float double. L argomento di tipo char è stampato. L argomento è considerato essere una sequenza di caratteri. Vengono stampati il numero di caratteri specificati da precisione a meno che non si incontri precedentemente il carattere '\0' (terminatore della stringa). % Stampa il carattere %.

6 308 Appendice D La funzione ritorna il numero di oggetti assegnati, a meno che non incontri la fine del file prima di qualunque conversione, nel qual caso restituisce EOF. In caso di conflitto tra carattere da leggere e stringa di controllo, la funzione termina restituendo il numero di oggetti letti fino a quel momento ed il carattere che ha generato conflitto (ad esempio una lettera quando ci si aspetta un numero) è lasciato "non letto" sul flusso di input. La funzione fa avanzare l'indicatore di posizione del file di un numero di caratteri pari a quelli effettivamente letti. Il formato degli specificatori di conversione per la scanf è: % [*] [massima_ampiezza] [tipo_di_conversione] * è chiamato specificatore di soppressione dell assegnamento, e serve per specificare che il dato letto non deve essere assegnato a nessuno dei parametri ma solo consumato. massima_ampiezza permette di specificare il numero massimo di caratteri che si possono leggere per l oggetto in questione. La Tabella D.2 specifica i tipi di conversione. Alcuni esempi di conversione sono i seguenti: La stringa di formato % c (con lo spazio tra i caratteri '%' e 'c') consente di leggere un carattere, scartando tutti i caratteri assimilabili allo spazio presenti all inizio della stringa da leggere. La stringa di formato %s consente di leggere una stringa, purché essa non contenga caratteri assimilabili allo spazio. I caratteri assimilabili allo spazio agiscono da separatori e quindi, una stringa che ne contiene, viene spezzata in più stringhe. Per leggere una stringa che si suppone possa contenere caratteri assimilabili allo spazio, è meglio usare gets o fgets. D.1.7 Gestione degli errori nelle operazioni su file D int ferror (FILE * fp); Ritorna un numero diverso da zero quando si è verificato precedentemente un errore durante una operazione sul flusso fp, altrimenti ritorna zero. ferror non modifica lo stato dell indicatore di errore e pertanto chiamate ripetute a ferror segnalano la medesima condizione di errore. D int feof (FILE * fp); Ritorna un numero diverso da zero quando si è raggiunta la fine del file durante una operazione di lettura dal flusso fp, altrimenti ritorna zero. feof non modifica lo stato dell indicatore di errore e pertanto chiamate ripetute a feof segnalano la medesima condizione di errore.

7 Alcune funzioni della libreria standard del C 309 Tabella D.2 Tipi di conversione per la funzione scanf. d, u, o, X Legge un intero con segno decimale (d), oppure decimale senza segno (u), ottale (o), esadecimale (X). L argomento corrispondente deve essere l indirizzo di una variabile di tipo int. Se il tipo di conversione è preceduto da una l l argomento corrispondente deve essere l indirizzo di una variabile di tipo (eventualmente unsigned) long, se da un h di tipo (unsigned) short. f E G c s Sono tutti caratteri equivalenti. Legge un numero "reale" che può essere espresso sia in notazione decimale che scientifica. L argomento corrispondente deve essere l indirizzo di una variabile di tipo float. Se il tipo di conversione è preceduto da una l l argomento corrispondente deve essere l indirizzo di una variabile di tipo double, se da una L di tipo long double. Legge il prossimo carattere, anche se spazio. Se è preceduto da un valore di massima_ampiezza, allora vengono letti tanti caratteri quanti specificati e l argomento corrispondente deve essere l indirizzo di un array di caratteri, altrimenti l indirizzo di una variabile di tipo char. Legge una sequenza di caratteri finché non ha letto il numero di caratteri specificati massima_ampiezza o non trova un carattere assimilabile allo spazio (che viene considerato come terminatore di parola). L argomento corrispondente deve essere l indirizzo di un array di caratteri. Il carattere '\0' (terminatore della stringa) viene aggiunto nell array dopo l ultimo carattere letto. % Legge il carattere %. n [ L argomento corrispondente deve essere l indirizzo di una variabile di tipo int a cui viene assegnato il numero di caratteri letti fino a quel momento. L argomento corrispondente deve essere l indirizzo di un array di caratteri. Il carattere '[' è seguito da una lista di caratteri terminata da ']' che prende il nome di lista_di_scansione. Vengono letti dal flusso fp caratteri fino a che questi sono compresi tra quelli della lista_di_scansione. Se il primo carattere della lista è '^', vengono letti dal flusso caratteri fino a che questi non sono compresi tra quelli della lista di scansione. Altra condizione di terminazione è il raggiungimento del numero di caratteri specificato da massima_ampiezza o della fine del file. D void clearerr (FILE * fp); Assegna il valore falso agli indicatori di errore e raggiungimento della fine del file del flusso fp. Ciò avviene implicitamente anche quando viene aperto il file, o viene chiamata la funzione rewind.

8 310 Appendice D D.1.8 Chiusura dei file e svuotamento del buffer associato D int fclose (FILE * fp); Causa la scrittura dei dati ancora bufferizzati relativi al flusso fp e la chiusura del file stesso. Restituisce 0 in caso di successo, altrimenti ritorna EOF e setta la variabile globale errno ad un valore opportuno diverso da zero. È chiamata implicitamente dalla funzione exit per tutti i file aperti. D int fflush (FILE * fp); Causa la scrittura dei dati ancora bufferizzati relativi al flusso fp. Restituisce 0 in caso di successo, altrimenti ritorna EOF e setta la variabile globale errno ad un valore opportuno diverso da zero. D.1.9 Apertura dei file D FILE * fopen (const char * filename, const char * type); Apre il file di nome filename, associa al file un flusso e ritorna un puntatore alla struttura di tipo FILE che descrive tale flusso. In caso di fallimento dell operazione restituisce NULL e setta la variabile globale errno ad un valore opportuno diverso da zero. type è una stringa di caratteri che indica le modalità di accesso e può avere i seguenti valori: "r" "w" "a" "r+" "w+" "a+" apertura in lettura di un file esistente; l'indicatore di posizione del file è posto all inizio del file. creazione di un nuovo file in scrittura, o troncamento a zero di un file esistente; l'indicatore di posizione del file è posto all inizio del file. creazione o apertura di un file in scrittura, in modalità append; l'indicatore di posizione del file è posto un byte oltre la fine del file: tutte le operazioni di scrittura avvengono solo alla fine del file. apertura in lettura e scrittura di un file esistente; l'indicatore di posizione del file è posto all inizio del file. creazione di un nuovo file in lettura e scrittura, o troncamento a zero di un file esistente; l'indicatore di posizione del file è posto all inizio del file. creazione o apertura di un file in modalità append e lettura; l'indicatore di posizione del file è posto alla fine del file, ma resta tale (ignorando eventuali o fseek o simili) solo per le operazioni di scrittura. Queste modalità sono relative a file di testo. Se si vuole trattare con file binari bisogna aggiungere in fondo alla stringa una 'b' (ad es. "rb", "wb", "a+b", etc.).

9 Alcune funzioni della libreria standard del C 311 In una qualunque modalità append, a causa delle bufferizzazione, non è possibile effettuare operazioni di lettura e scrittura senza interporre tra loro una chiamata a fflush o fseek o rewind. D.1.10 Lettura e scrittura binaria D int fread (void * ptr, size_t size, int nelem, FILE * fp); Copia nell array puntato da ptr, nelem blocchi di dati binari dal flusso fp. Un blocco di dati è una sequenza di size byte. La funzione termina dopo aver letto un numero di byte pari a quello specificato, quando incontra la fine del file, oppure in caso di errore di lettura. Restituisce il numero di blocchi effettivamente letti (permettendo di verificare la correttezza dell esecuzione). La funzione fa avanzare l'indicatore di posizione del file di un numero di byte pari a quelli effettivamente letti. D int fwrite (void * ptr, size_t size, int nelem, FILE * fp); Scrive nel flusso fp, nelem blocchi di dati binari dall array puntato da ptr. Un blocco di dati è una sequenza di size byte. La funzione termina dopo aver scritto un numero di byte pari a quello specificato oppure in caso di errore di scrittura. Restituisce il numero di blocchi effettivamente scritti (permettendo di verificare la correttezza dell esecuzione). La funzione fa avanzare l'indicatore di posizione del file di un numero di byte pari a quelli effettivamente scritti. D.1.11 Posizionamento all interno dei file D int fseek (FILE * fp, long offset, int ptrname); Sposta l indicatore di posizione del file, relativo al flusso fp, che indica dove leggere o scrivere con la prossima operazione. La posizione è specificata mediante un offset (in byte) dalla posizione indicata da ptrname: SEEK_SET indica che lo spostamento è relativo all inizio del file (e quindi offset deve essere un numero maggiore o uguale a zero); SEEK_CUR indica che lo spostamento è relativo alla posizione corrente; SEEK_END indica che lo spostamento è relativo alla fine del file (e quindi offset deve essere un numero minore o uguale a zero). In caso di successo ritorna 0 e assegna il valore falso all indicatore di fine-file del flusso fp. In caso di errore, cioè di impossibilità a posizionarsi dove richiesto, restituisce -1 e setta la variabile globale errno ad un valore opportuno diverso da zero. Utilizzando SEEK_SET, un offset pari a 0 sposta l indicatore sul primo byte del file. Utilizzando SEEK_END, un offset pari a -1 sposta l indicatore sull ultimo byte del file, mentre un un offset pari a 0 sposta l indicatore un byte oltre la fine del file (append).

10 312 Appendice D D long ftell (FILE * fp); Restituisce l offset (in byte) dell indicatore di posizione del file relativo al flusso fp, a partire dall inizio. Ovvero la dimensione del file, in byte. In caso di errore restituisce -1 e setta la variabile globale errno ad un valore opportuno diverso da zero. D void rewind(file * fp); Sposta l indicatore di posizione del file, relativo al flusso fp, in posizione 0. Assegna il valore falso agli indicatori di errore e di fine-file, del flusso fp. In caso di errore setta la variabile globale errno ad un valore opportuno diverso da zero. D.1.12 Cancellazione di file D int remove (const char * filename); Cancella il file identificato da filename. Se si tenta di cancellare un file aperto, il risultato dipende dall implementazione. In caso di successo restituisce 0, altrimenti ritorna -1 e setta la variabile globale errno ad un valore opportuno diverso da zero. D.1.13 Ridenominazione di file D int rename (const char * old_name, const char * new_name); Modifica il nome del file identificato da old_name in new_name. Se si tenta di cambiare il nome di un file aperto o new_name è un nome già usato da un altro file, il risultato dipende dall implementazione. In caso di successo restituisce 0, altrimenti ritorna -1 e setta la variabile globale errno ad un valore opportuno diverso da zero. D.2 Gestione della memoria La dichiarazione delle seguenti funzioni si trova nel file stdlib.h. D.2.1 Allocazione e deallocazione dinamica di memoria D void * malloc ( size_t size); Riserva size byte contigui in memoria e ritorna un puntatore al primo byte dell area riservata. Restituisce 0 (NULL) in caso di fallimento dell allocazione. La memoria riservata da malloc non viene inizializzata in nessun modo.

11 Alcune funzioni della libreria standard del C 313 D void free (void * ptr); Rende nuovamente libera l area di memoria precedentemente allocata in modo dinamico e puntata da ptr. Chiamare la funzione free su un area di memoria non precedente allocata o già deallocata da una chiamata precedente, porta a un risultato indefinito. D void * calloc (size_t nelem, size_t size); Riserva size*nelem byte contigui in memoria e ritorna un puntatore al primo byte dell area riservata. Restituisce 0 (NULL) in caso di fallimento dell allocazione. calloc inizializza a zero tutti i bit dell area riservata. D.3 Gestione delle stringhe La dichiarazione delle seguenti funzioni si trova nel file string.h. Una stringa è una sequenza di caratteri terminata dal carattere '\0'. D.3.1 Concatenazione di stringhe D char * strcat (char * s1, const char * s2); Appende una copia di s2 alla fine di s1. Il carattere terminatore di s1 viene sovrascritto dal primo carattere di s2. È compito del programmatore garantire che in s1 ci sia abbastanza spazio per l operazione. La funzione ritorna s1. D char * strncat (char * s1, const char * s2, size_t n); Appende al massimo n caratteri (più il terminatore di stringa) da s2 alla fine di s1. Il carattere terminatore di s1 viene sovrascritto dal primo carattere di s2. È compito del programmatore garantire che in s1 ci sia abbastanza spazio per l operazione. La funzione ritorna s1. D.3.2 Copia di stringhe D char * strcpy (char * s1, const char * s2); Copia s2 in s1. È compito del programmatore garantire che in s1 ci sia abbastanza spazio per l operazione. La funzione ritorna s1. D char * strncpy (char * s1, const char * s2, size_t n); Copia al massimo n caratteri da s2 in s1. Se s2 ha lunghezza minore di n vengono aggiunti caratteri nulli a s1 fino a raggiungere n caratteri. Se s2 ha lunghezza

12 314 Appendice D maggiore di n, s1 risulterà non terminata. È compito del programmatore garantire che in s1 ci sia abbastanza spazio per l operazione. La funzione ritorna s1 che può essere come detto anche una stringa non terminata. D.3.3 Confronto di stringhe D int strcmp (const char * s1, const char * s2); Confronta le stringhe s1 e s2. La funzione restituisce 0 se le stringhe sono uguali; un numero minore di 0 se s1 precede in ordine alfabetico s2; un numero maggiore di 0 se s1 segue in ordine alfabetico s2. D int strncmp (const char * s1, const char * s2, size_t n); Confronta le stringhe s1 e s2, limitandosi ai primi n caratteri. La funzione restituisce 0 se le stringhe sono uguali; un numero minore di 0 se s1 precede in ordine alfabetico s2; un numero maggiore di 0 se s1 segue in ordine alfabetico s2. D.3.4 Lunghezza di una stringa D int strlen (const char * s1); Restituisce il numero di caratteri della stringa (terminatore escluso). D.4 Varie D.4.1 Ora e data La dichiarazione delle seguenti funzioni e strutture si trova nel file time.h. D time_t time (time_t * timer); Restituisce (ed assegna a timer se non è un puntatore nullo) il tempo assoluto. Il formato non è specificato (spesso viene usato il numero di secondi passati dal 1 gennaio 1970), ma viene fornita la funzione localtime che permette di interpretarlo. D struct tm * localtime (const time_t * timer); Converte il tempo assoluto puntato da timer (nello stesso formato restituito da time) e restituisce il puntatore ad una variabile strutturata di tipo tm (Attenzione, chiamate successive possono operare sulla stessa variabile di tipo tm che viene riscritta ad ogni chiamata). La struttura tm ha come minimo i seguenti campi (ne possono esistere altri):

13 Alcune funzioni della libreria standard del C 315 struct tm { /* eventuali altri campi */ int tm_sec; /* secondi */ int tm_min; /* minuti */ int tm_hour; /* ore /* int tm_mday; /* giorno del mese [1..31] */ int tm_mon; /* mese da gennaio [0..11] */ int tm_year; /* anni dal 1900 [0.. ]*/ int tm_wday; /*giorno dalla domenica [0..6] */ int tm_yday; /* giorno dal primo gennaio: [0..365] */ int tm_isdst; /* segnalatore di modifica nell'orario locale (ad esempio ora legale)*/ }; D.4.2 Generazione di numeri casuali La dichiarazione delle seguenti funzioni si trova nel file stdlib.h. D int rand (void); È un generatore di numeri pseudo-casuali. Restituisce un valore intero nell intervallo [0..RAND_MAX]. Chiamate successive restituiscono numeri differenti. D void srand (unsigned int seme); Permette di scegliere il valore iniziale per la generazione di numeri casuali da parte di rand. Usando uno stesso seme, rand restituisce sequenze identiche di numeri. Un metodo comune di inizializzazione del seme è basato sulla chiamata della funzione time. D.4.3 Uscita da un programma La dichiarazione della exit si trova nel file stdlib.h. D void exit (int status); Causa la chiusura di tutti i file aperti e quindi la conclusione del programma restituendo all ambiente il valore passato in status.

Gestione dei File. Credits Prof. Campi

Gestione dei File. Credits Prof. Campi Gestione dei File Credits Prof. Campi 1 Perché i file? Sono strutture dati persistenti Sono solitamente memorizzati sui dischi Si usano dall'interno dei programmi Realizzano la persistenza dei dati cioè

Dettagli

Il linguaggio C. Breve panoramica su stdio.h

Il linguaggio C. Breve panoramica su stdio.h Il linguaggio C Breve panoramica su stdio.h 1 Input/Output: stdio.h Contiene definizioni di costanti legate all I/O es. EOF (end of file) #define EOF (-1) valore restituito alla fine di un file Contiene

Dettagli

Streams e disk files

Streams e disk files Streams e disk files Streams Un canale è una sequenza di byte di dati Sorgente o destinazione di dati che possono essere associati ad un disco o ad altre periferiche Due tipi di stream: Testo: sequenza

Dettagli

Laboratorio di Programmazione

Laboratorio di Programmazione Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 26 Sommario: Gestione dei file in C. File ad accesso sequenziale: apertura, chiusura, lettura e scrittura. File binari. Gestione files

Dettagli

Capitolo 5 -- Stevens

Capitolo 5 -- Stevens Libreria standard di I/O Capitolo 5 -- Stevens Libreria standard di I/O rientra nello standard ANSI C perché è stata implementata su molti sistemi operativi oltre che su UNIX le sue funzioni individuano

Dettagli

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

GESTIONE DEI FILE IN C. Docente: Giorgio Giacinto AA 2008/2009 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

Dettagli

Gestione dei file in C

Gestione dei file in C Gestione dei file in C Fondamenti di Informatica Che cos è un file e a cosa serve? Memoria di massa vs memoria centrale q La memoria di massa (disco fisso) è un dispositivo di memorizzazione generalmente

Dettagli

Files in C endofile

Files in C endofile Files in C Il C vede i file semplicemente come un flusso (stream) sequenziale di bytes terminati da un marcatore speciale che determina la fine del file (end-of-file). 0 1 2 3 4... endofile A differenza

Dettagli

I files in C. A cura del prof. Ghezzi

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

Dettagli

Gestione dei file in C

Gestione dei file in C Gestione dei file in C Fondamenti di Informatica Che cos è un file e a cosa serve? Memoria di massa vs memoria centrale q La memoria di massa (disco fisso) è un dispositivo di memorizzazione generalmente

Dettagli

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

I files (archivi) Il C definisce in stdio.h tre file aperti automaticamente: stdin, stdout e stderr.! Sono ad accesso sequenziale diretto C I files di dati I files (archivi) Files di programmi sono solo gestiti dal compilatore C Files di dati Possono essere creati, aggiornati, letti, scritti da programmi C Servono per conservare dati su

Dettagli

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

Input/Output. Lettura e scrittura Caratteri e Stringhe: Terminale e file. Input/output. caratteri stringhe formattato ascii binari Input/Output Lettura e scrittura Caratteri e Stringhe: Terminale e file Input/output console file caratteri stringhe formattato ascii binari Linguaggio ANSI C Input/Output - 1 La libreria standard del

Dettagli

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

Perchè i files? Realizzano la persistenza dei dati. Sono delle strutture di dati sequenziali. dati che sopravvivono all esecuzione del programma Perchè i files? Realizzano la persistenza dei dati dati che sopravvivono all esecuzione del programma Sono delle strutture di dati sequenziali Files e S.O. I files sono gestiti dal S.O. e resi visibili

Dettagli

Linguaggio C: i file

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

Dettagli

Introduzione al C. Stream e disk file

Introduzione al C. Stream e disk file Introduzione al C Stream e disk file Stream Un canale è una sequenza di byte di dati Sorgente o destinazione di dati che possono essere associati ad un disco o ad altre periferiche Due tipi di stream:

Dettagli

Linguaggio C La libreria standard

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

Dettagli

Linguaggio C La libreria standard

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

Dettagli

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

Input / Output. Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard Stdio.h Input / Output Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard Sia i file che i dispositivi (tastiera, schermo...) sono visti come

Dettagli

File binari e file di testo

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

Dettagli

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

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter Informatica B a.a 2005/06 (Meccanici 4 squadra) Scaglione: da PO a ZZZZ PhD. Ing. Michele Folgheraiter Ripasso Liste: typedef struct EL{TipoElemento Info; struct EL *Prox;} ElemLista; typedef ElemLista

Dettagli

Allocazione dinamica della memoria

Allocazione dinamica della memoria Allocazione dinamica della memoria Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati

Dettagli

Lezione 11: Liste a Puntatori e Input/Output

Lezione 11: Liste a Puntatori e Input/Output Lezione 11: Liste a Puntatori e Input/Output Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione Richiamo: strutture (struct)

Dettagli

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

Input / Output. Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard Stdio.h Input / Output Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard Sia i file che i dispositivi (tastiera, schermo...) sono visti come

Dettagli

puntatori Lab. Calc. AA 2006/07 1

puntatori Lab. Calc. AA 2006/07 1 puntatori Lab. Calc. AA 2006/07 1 Attributi di un oggetto nome o identificatore; tipo; valore (o valori); indirizzo; Lab. Calc. AA 2006/07 2 Indirizzo Consideriamo la dichiarazione con inizializzazione:

Dettagli

Input/output console file caratteri stringhe formattato ascii binari

Input/output console file caratteri stringhe formattato ascii binari Input/output Input/Output Input/output console file caratteri stringhe formattato ascii binari La libreria standard del C La libreria standard del C è in realtà un insieme di librerie Per usare una libreria,

Dettagli

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

Settimana n.12. Obiettivi File!di!testo. Contenuti Concetto!di!file!e!funzioni! fopen/fclose Funzioni!fgets+sscanf Approfondimenti!su!printf! e! Settimana n.12 Obiettivi File!di!testo Contenuti Concetto!di!file!e!funzioni! fopen/fclose Funzioni!fgets+sscanf Approfondimenti!su!printf! e!scanf 437 Files Vista d insieme dei formati di file File File

Dettagli

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 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

Dettagli

GESTIONE DEI FILE. File come tipo di dati

GESTIONE DEI FILE. File come tipo di dati GESTIONE DEI FILE File come tipo di dati Nel linguaggio C, i file vengono trattati come un tipo di dati derivato, cioè ottenuto dai tipi elementari esistenti. In pratica, quando si apre e si gestisce un

Dettagli

Lezione 22: Input/Output e Files

Lezione 22: Input/Output e Files Lezione 22: Input/Output e Files Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università di Salerno Struttura della lezione Esami: date e modalità Funzioni di libreria standard

Dettagli

Scrittura formattata - printf

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

Dettagli

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 6 Marzo 2016 File Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 6 Marzo 2016 Obiettivi Il salvataggio dei dati File File e OS File in C 2 3 I programmi che abbiamo considerato finora. Perdono

Dettagli

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 21 Maggio 2014 File Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 21 Maggio 2014 Obiettivi Il salvataggio dei dati File File e OS File in C 2 3 I programmi che abbiamo considerato finora. Perdono

Dettagli

Esercitazioni di Fondamenti di Informatica - Lez. 9 4/12/2018

Esercitazioni di Fondamenti di Informatica - Lez. 9 4/12/2018 Esercitazioni di Fondamenti di Informatica - Lez. 9 /1/018 Esercizi sulla gestione dei file in C Il codice degli esercizi e contenuto nella cartella parte1 1. Creare una funzione C che legga tutto cio

Dettagli

INPUT E OUTPUT DI VALORI NUMERICI

INPUT E OUTPUT DI VALORI NUMERICI INPUT E OUTPUT DI VALORI NUMERICI FUNZIONI DI I/O PER NUMERI Per utilizzare le funzioni di Input/Output bisogna includere il file di intestazione (header file) denominato contiene la

Dettagli

La gestione dei file in C

La gestione dei file in C Gestione dei file La gestione dei file in C Il file è un astrazione molto ampia nella descrizione di un sistema informatico nastro di I/O supporto di comunicazione macchina/ambiente di ogni tipo (sensori,

Dettagli

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 15 Maggio 2015 File Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 15 Maggio 2015 2nda prova in itinere Era il 21 Maggio 2 2nda prova in itinere Era il 21 Maggio Spostata (da 3 settimane) al 22

Dettagli

Ingresso ed Uscita in C. Informatica 1 / 15

Ingresso ed Uscita in C. Informatica 1 / 15 Ingresso ed Uscita in C Informatica 1 / 15 Input e Output in C Linguaggio C: progettato per essere semplice e con poche istruzioni Non esistono istruzioni di ingresso / uscita (I/O)!!! Ingresso ed uscita

Dettagli

Suggerimenti, note utili ed errori comuni. Fondamenti di informatica T

Suggerimenti, note utili ed errori comuni. Fondamenti di informatica T Suggerimenti, note utili ed errori comuni Fondamenti di informatica T printf, scanf e stringhe di formato La lettura e scrittura di variabili in formato testo sono realizzate tramite printf e scanf sfruttando

Dettagli

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

Gestione dei file. Linguaggio ANSI C Input/Output - 13 Gestione dei file Necessità di persistenza dei file archiviare i file su memoria di massa. Un file è una astrazione fornita dal sistema operativo, il cui scopo è consentire la memorizzazione di informazioni

Dettagli

Il linguaggio C. Puntatori e dintorni

Il linguaggio C. Puntatori e dintorni Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;

Dettagli

Introduzione al C Lez. 4

Introduzione al C Lez. 4 Introduzione al C Lez. 4 Allocazione Dinamica della memoria http://www.di.unipi.it/~rossano/algo1/lez4.pdf Allocazione dinamica memoria In C la memoria può essere anche gestita in modo dinamico, attraverso

Dettagli

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 5 31/10/2013

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 5 31/10/2013 Laboratorio di Programmazione 1 1 Docente: dr. Damiano Macedonio Lezione 5 31/10/2013 Original work Copyright Sara Migliorini, University of Verona Modifications Copyright Damiano Macedonio, University

Dettagli

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

Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' a p e \0 STRINGHE: ARRAY DI CARATTERI Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' s a p e \0 0 1 2 3 Un vettore di N caratteri può dunque ospitare stringhe lunghe al più N-1

Dettagli

Caratteri e stringhe

Caratteri e stringhe Caratteri e stringhe Caratteri Dato che un computer può memorizzare esclusivamente sequenze di bit, per memorizzare un carattere (e quindi testi) è necessario stabilire una convenzione che associa a un

Dettagli

Corso di Informatica A.A

Corso di Informatica A.A Corso di Informatica A.A. 2009-2010 Lezione 13 Corso di Informatica 2009-2010 Lezione 13 1 Input/output da file Stream Si definisce stream una sequenza di bytes di dati che può essere in ingresso (input

Dettagli

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

Gestione dei file. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico Gestione dei file Stefano Ferrari Università degli Studi di Milano stefano.ferrari@unimi.it Programmazione anno accademico 2016 2017 Gli stream Si dice stream qualsiasi sorgente di dati in ingresso e qualsiasi

Dettagli

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

Laboratorio di Sistemi Operativi Marzo-Giugno 2008 Matricole congrue 0 mod 3 Marzo-Giugno 2008 Matricole congrue 0 mod 3 Libreria standard di I/O Libreria standard di I/O Permette di fare I/O senza doversi preoccupare di problematiche di bufferizzazione Definizione del buffer Taglia

Dettagli

Introduzione al linguaggio C Primi programmi

Introduzione al linguaggio C Primi programmi Introduzione al linguaggio C Primi programmi Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica

Dettagli

Laboratorio di Sistemi Operativi primavera 2009

Laboratorio di Sistemi Operativi primavera 2009 primavera 2009 Libreria standard di I/O Libreria standard di I/O rientra nello standard ANSI C perché è stata implementata su molti sistemi operativi oltre che su UNIX le sue funzioni individuano il file

Dettagli

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

Input / Output. Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard Stdio.h Input / Output Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard Sia i file che i dispositivi (tastiera, schermo...) sono visti come

Dettagli

FILE: tipo operazione Istruì. prototipo esempi lettura di un carattere fgetc Int fgetc(file *flusso) Vedi sotto

FILE: tipo operazione Istruì. prototipo esempi lettura di un carattere fgetc Int fgetc(file *flusso) Vedi sotto FILE: tipo operazione Istruì. prototipo esempi lettura di un carattere fgetc Int fgetc(file *flusso) Vedi sotto alla volta Scrittura di un fputc Int fputc(int ch, FILE *flusso); carattere alla volta Lettura

Dettagli

Lezione 19 e Allocazione dinamica della memoria - Direttive al preprocessore - Libreria standard - Gestione delle stringhe

Lezione 19 e Allocazione dinamica della memoria - Direttive al preprocessore - Libreria standard - Gestione delle stringhe Lezione 19 e 20 - Allocazione dinamica della memoria - Direttive al preprocessore - Libreria standard - Gestione delle stringhe Valentina Ciriani (2005-2008) Laboratorio di programmazione Valentina Ciriani

Dettagli

Gestione dinamica della memoria

Gestione dinamica della memoria Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - pietro.dilena@unibo.it A pessimistic programmer sees the array as half empty.

Dettagli

Ingresso ed Uscita in C. Luca Abeni

Ingresso ed Uscita in C. Luca Abeni Ingresso ed Uscita in C Luca Abeni Input e Output in C Linguaggio C: progettato per essere semplice e con poche istruzioni Non esistono neanche istruzioni di ingresso / uscita (I/O)!!! Ingresso ed uscita

Dettagli

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

Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 9 File Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 9 File D. Bloisi, A. Pennisi, S. Peluso, S. Salza, C. Ciccotelli Sommario Input/Output

Dettagli

caratteri, immagini, suoni, ecc.

caratteri, immagini, suoni, ecc. Il linguaggio C Input e output I flussi di I/O L uso di buffer Apertura e chiusura di file Lettura e scrittura di dati La selezione di un metodo di I/O I/O non bufferizzato L accesso diretto a file Input

Dettagli

Esercizi. I File ed il C

Esercizi. I File ed il C Politecnico di Milano Esercizi File di testo,, file binari I File ed il C Insieme omogeneo di dati, memorizzato su disco e caratterizzato da un nome La lunghezza di un file non è fissata a priori Astrazione

Dettagli

La gestione dell'errore

La gestione dell'errore La gestione dell'errore Esiste una variabile globale intera, definita nell'header errno.h che viene settata nel caso in cui una chiamata di sistema non possa eseguire correttamente il suo compito. Tale

Dettagli

Il linguaggio C. Notate che...

Il linguaggio C. Notate che... Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione

Dettagli

LIBRERIE STANDARD in C Le librerie standard

LIBRERIE STANDARD in C Le librerie standard 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

Dettagli

Introduzione al C Lez. 4. Allocazione Dinamica della memoria

Introduzione al C Lez. 4. Allocazione Dinamica della memoria Introduzione al C Lez. 4 Allocazione Dinamica della memoria Allocazione dinamica memoria In C la memoria può essere anche gestita in modo dinamico, attraverso l allocazione esplicita di blocchi di memoria

Dettagli

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

Dettagli

Input/Output di numeri

Input/Output di numeri Input/Output di numeri I/O di numeri Per utilizzare le funzioni di I/O occorre include il file di intestazione (o file header) stdio.h utilizzando all inizio del sorgente la direttiva #include

Dettagli

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

Dettagli

JAVA. import java.util.*; #include <stdio.h> public static class test { int variable; private int variable; int main (int argc, char *argv[]) {

JAVA. import java.util.*; #include <stdio.h> public static class test { int variable; private int variable; int main (int argc, char *argv[]) { JAVA C import javautil*; public static class test { private int variable; public void main (String[] args) { variable = 0; Systemoutprintln( Variable is: + variable); #include int variable; int

Dettagli

Primi programmi in C

Primi programmi in C Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Uso del compilatore gcc Struttura di un programma

Dettagli

Uso avanzato dei puntatori Allocazione dinamica della memoria

Uso avanzato dei puntatori Allocazione dinamica della memoria Uso avanzato dei puntatori Allocazione dinamica della memoria Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica

Dettagli

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

I File. Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa. I File Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa. Consente una memorizzazione persistente dei dati, non limitata dalle dimensioni della memoria centrale. Generalmente un

Dettagli

Caratteri e stringhe

Caratteri e stringhe Caratteri e stringhe Caratteri Dato che un computer può memorizzare esclusivamente sequenze di bit, per memorizzare un carattere (e quindi testi) è necessario stabilire una convenzione che associa a un

Dettagli

Le librerie standard. ! La libreria standard del C è in realtà un insieme di librerie

Le librerie standard. ! La libreria standard del C è in realtà un insieme di librerie ! La libreria standard del C è in realtà un insieme di librerie! Per usare una libreria, non occorre inse -rirla esplicitamente nel progetto: ogni ambiente di sviluppo sa già dove cercarle! Ogni file sorgente

Dettagli

DOTT. ING. LEONARDO RIGUTINI DIPARTIMENTO INGEGNERIA DELL INFORMAZIONE UNIVERSITÀ DI SIENA VIA ROMA 56 53100 SIENA UFF. 0577234850-7102 RIGUTINI@DII

DOTT. ING. LEONARDO RIGUTINI DIPARTIMENTO INGEGNERIA DELL INFORMAZIONE UNIVERSITÀ DI SIENA VIA ROMA 56 53100 SIENA UFF. 0577234850-7102 RIGUTINI@DII Gestione dei files DOTT. ING. LEONARDO RIGUTINI DIPARTIMENTO INGEGNERIA DELL INFORMAZIONE UNIVERSITÀ DI SIENA VIA ROMA 56 53100 SIENA UFF. 0577234850-7102 RIGUTINI@DII.UNISI.IT HTTP://WWW.DII.UNISI.IT/~RIGUTINI/

Dettagli

Approfondimento : printf

Approfondimento : printf Approfondimento : printf La funzione printf : stampa su standard input (video) dati complessi ha un formato articolato, molto potente ma spesso poco chiaro ha un numero di opzioni utili e poco conosciute

Dettagli

Operazioni su file di caratteri

Operazioni su file di caratteri Operazioni su file di caratteri Apertura fopen Chiusura fclose Scrittura fprintf Lettura fscanf Controllo fine file feof Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1 Apertura di un file: Si

Dettagli

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

Formattazione avanzata. Modificatori di formato in output Modificatori di formato in input Stream predefiniti I/O Avanzato e File Formattazione avanzata Modificatori di formato in output Modificatori di formato in input Stream predefiniti 2 Formattazione avanzata Formattazione dell output L output (su schermo

Dettagli

Stringhe in C. Luca Abeni. Informatica Luca Abeni 1 / 10

Stringhe in C. Luca Abeni. Informatica Luca Abeni 1 / 10 Stringhe in C Luca Abeni Informatica Luca Abeni 1 / 10 Stringhe in C Stringhe: tipo di dato strutturato Sequenze di caratteri Linguaggio C: progettato per la semplicità No supporto nativo per le stringhe

Dettagli

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

Introduzione. L elaborazione dei files in C. Elaborazione dei files (1) Elaborazione dei files (2) D.D. cap. 11+ pp K.P. pp. Introduzione L elaborazione dei files in C D.D. cap. 11+ pp. 569-572 K.P. pp. 581-583 La memorizzazione dei dati nelle variabili e nei vettori è temporanea: tutti quei dati andranno persi quando il programma

Dettagli

Input/Output su File

Input/Output su File Input/Output su File Premessa importante Queste dispense si intendono unicamente come riferimento rapido per consultare il significato e I prototipi delle funzioni per l'accesso ai file. Per avere esempi

Dettagli

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 File in C Indice La gestione dei file in C e gli stream Apertura e chiusura di un file Operazioni sui file Accesso sequenziale e non sequenziale Gestione dei file in C In C all interno della standard library

Dettagli

Funzioni di I/O per numeri. Input e output di valori numerici. Input formattato scanf. Stream preesistenti

Funzioni di I/O per numeri. Input e output di valori numerici. Input formattato scanf. Stream preesistenti Funzioni di I/O per numeri 2 Input e output di valori numerici Ver. 2.4.2 2012 - Claudio Fornaro - Corso di programmazione in C Per utilizzare le funzioni di Input/Output bisogna includere il file di intestazione

Dettagli

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 15 Maggio 2013 File Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 15 Maggio 2013 Obiettivi Alcuni problemi aperti Il main() Allocazione dinamica della memoria Il salvataggio dei dati File File

Dettagli

Linguaggio C: Stringhe Valeria Cardellini

Linguaggio C: Stringhe Valeria Cardellini Linguaggio C: Stringhe Valeria Cardellini Corso di Calcolatori Elettronici A.A. 2018/19 Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica Argomenti q

Dettagli

Laboratorio di Informatica Ingegneria Clinica Lezione 30/11/2011

Laboratorio di Informatica Ingegneria Clinica Lezione 30/11/2011 Laboratorio di Informatica Ingegneria Clinica Lezione 30/11/2011 Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via del Policlinico, 147 00161 Roma I/O in C Il sistema di I/O del C è una interfaccia uniforme

Dettagli

Lezione V Fondamenti di Ingresso/Uscita

Lezione V Fondamenti di Ingresso/Uscita Programmazione e Laboratorio di Programmazione Lezione V Fondamenti di Ingresso/Uscita Programmazione e Laboratorio di Programmazione: Fondamenti di Ingresso/Uscita 1 Flussi standard di I/O Standard streams:

Dettagli

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

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

Dettagli

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

Compendio sottoinsieme del C++ a comune col C. (Libreria standard, Input/Output, Costanti, Dichiarazioni e typedef, Memoria Dinamica) Compendio sottoinsieme del C++ a comune col C (Libreria standard, Input/Output, Costanti, Dichiarazioni e typedef, Memoria Dinamica) Librerie 1/2 Il solo insieme di istruzioni di un linguaggio di programmazione

Dettagli

Linguaggio C. Vettori, Puntatori e Funzioni Stringhe. Università degli Studi di Brescia. Prof. Massimiliano Giacomin

Linguaggio C. Vettori, Puntatori e Funzioni Stringhe. Università degli Studi di Brescia. Prof. Massimiliano Giacomin Linguaggio C Vettori, Puntatori e Funzioni Stringhe Università degli Studi di Brescia Prof. Massimiliano Giacomin SCHEMA DELLA LEZIONE RELAZIONE TRA VETTORI E PUNTATORI (e le stringhe letterali come caso

Dettagli

Dati aggregati. Violetta Lonati

Dati aggregati. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica - in breve: Definizione di tipi Array Stringhe Strutture

Dettagli

SOMMARIO SU LETTURA E SCRITTURA (I/O) DEGLI STANDARD FILES

SOMMARIO SU LETTURA E SCRITTURA (I/O) DEGLI STANDARD FILES SOMMARIO SU LETTURA E SCRITTURA (I/O) DEGLI STANDARD FILES Con conversione di formato: int scanf (const char *format,... ) /* ritorna il numero di argomenti assegnati con successo altrimenti EOF se fine

Dettagli

I CARATTERI E LE STRINGHE

I CARATTERI E LE STRINGHE I CARATTERI E LE STRINGHE IL CODICE ASCII Per memorizzare i simboli grafici corrispondenti ai caratteri bisogna associare un numero intero a ciascuno di essi Il codice ASCII / æski/ (American Standard

Dettagli

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

Corso di Fondamenti di Programmazione canale E-O. Introduzione. Elaborazione dei files (2) Corso di Fondamenti di Programmazione canale E-O Tiziana Calamoneri L elaborazione dei files in C DD, Cap. 11 + pp. 569-572 KP, pp. 581-583 Introduzione La memorizzazione dei dati nelle variabili e nei

Dettagli

STRINGHE: ARRAY DI CARATTERI! a p e \0

STRINGHE: ARRAY DI CARATTERI! a p e \0 STRINGHE: ARRAY DI CARATTERI! Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' s a p e \0 0 1 2 3 Un vettore di N caratteri può dunque ospitare stringhe lunghe al più

Dettagli

Introduzione al linguaggio C Dati aggregati

Introduzione al linguaggio C Dati aggregati Introduzione al linguaggio C Dati aggregati Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 5 ottobre

Dettagli

Standard I/O. Franco Maria Nardini

Standard I/O. Franco Maria Nardini 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

Dettagli

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 File in C Indice La gestione dei file in C e gli stream Apertura e chiusura di un file Operazioni sui file Accesso sequenziale e non sequenziale La gestione del buffer Gestione dei file in C In C all interno

Dettagli

CARATTERI E STRINGHE Caratteri e stringhe Funzioni della libreria standard I/O Funzioni della libreria di gestione delle stringhe

CARATTERI E STRINGHE Caratteri e stringhe Funzioni della libreria standard I/O Funzioni della libreria di gestione delle stringhe CARATTERI E STRINGHE Caratteri e stringhe Funzioni della libreria standard I/O Funzioni della libreria di gestione delle stringhe Caratteri e stringhe Caratteri Sono i blocchi costitutivi di ogni programma:

Dettagli