LIBRERIE STANDARD in C. LIBRERIE STANDARD in C

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

Download "LIBRERIE STANDARD in C. LIBRERIE STANDARD in C"

Транскрипт

1 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 Ogni file sorgente che ne faccia uso deve però includere header opportuno che contiene le dichiarazioni necessarie 1 LIBRERIE STANDARD in C Le librerie standard input/output stdio.h funzioni matematiche math.h gestione di stringhe string.h operazioni su caratteri ctype.h gestione dinamica della memoria stdlib.h ricerca e ordinamento stdlib.h... e molte altre 2

2 IL MODELLO DI INPUT/OUTPUT Libreria standard stdio Input avviene di norma dal canale standard di input (stdin) Output avviene di norma sul canale standard di output (stdout) Input e output avvengono sotto forma di una sequenza di caratteri tale sequenza è terminata dallo speciale carattere EOF (End-Of-File), la cui rappresentazione può variare da un sistema operativo ad un altro 3 CANALI STANDARD Di norma: il canale standard di input, stdin, coincide con la tastiera il canale standard di output, stdout, coincide con il video Esiste inoltre un altro canale di output, riservato ai messaggi di errore: stderr anch esso di norma coincide con il video 4

3 MODELLO di BASE per I/O Poiché sui canali di I/O fluiscono sequenze di caratteri, il modello di I/O prevede due operazioni base: scrivere un carattere sul canale di output putchar(ch); leggere un carattere dal canale di input ch = getchar(); Ogni altro tipo di I/O può essere costruito a partire da queste operazioni primitive 5 I/O A CARATTERI int putchar(int ch); scrive un carattere sul canale di output restituisce il carattere scritto, o EOF in caso di errore int getchar(void); legge un carattere dal canale di input restituisce il carattere letto, oppure EOF in caso la sequenza di input sia finita o in caso di errore Entrambe le funzioni leggono/scrivono un carattere convertito in int 6

4 ESEMPIO Ricopiare l input standard sull output standard, carattere per carattere #include <stdio.h> Attenzione: getchar() inizia a produrre caratteri solo dopo aver premuto INVIO main(){ int c; while(( c=getchar() )!= EOF) putchar(c); } Per chiudere l input producendo un EOF da tastiera, CTRL+Z in sistemi Win, CTRL+D in Unix 7 I/O DI TIPI PRIMITIVI Ogni altro tipo di I/O può essere costruito sulle due primitive putchar() e getchar() Esempi scrivere o leggere stringhe di caratteri scrivere o leggere la rappresentazione di un numero (naturale, intero, reale) sotto forma di stringa, in una base data Queste funzionalità sono già disponibili nella libreria di I/O standard 8

5 I/O con FORMATO La libreria standard offre due funzioni di I/O di uso generale, che compendiano tutte le necessità precedenti: printf() e scanf() int printf(...); scrive sul canale di output una serie di valori, effettuando le conversioni richieste ove necessario restituisce il numero di caratteri emessi int scanf(...); legge dal canale di input una serie di campi, effettuando le conversioni richieste ove necessario restituisce il numero di campi letti 9 I/O con FORMATO Le funzioni printf() e scanf()possono avere un numero variabile di parametri. Inoltre, possono scrivere/leggere: singoli caratteri stringhe di caratteri formattate nel modo indicato dall utente interi, con o senza segno, in base 8, 10, 16 reali (float o double) in vari formati 10

6 Sintassi: OUTPUT con FORMATO: printf() int printf(char frm[], e1,, en) la funzione scrive sul canale di output i risultati delle espressioni e1,, en nel formato specificato dalla stringa frm[] restituisce il numero di caratteri scritti, o EOF in caso di errore 11 OUTPUT con FORMATO: printf() La stringa di formato frm[] int printf(char frm[], e1,, en) è una stringa che può contenere specifiche di formato, del tipo %carattere Formati per caratteri e stringhe: tipi carattere e stringhe (formato unico) Formati per numeri: tipi reali fixed-pt. esp. varia float %f %e %g double %lf %le %lg long double %Lf %Le %Lg carattere singolo %c stringa di caratteri %s tipi interi normale short long (signed) int %d %hd %ld unsigned int (decimale) %u %hu %lu unsigned int (ottale) %o %ho %lo unsigned int (esadecimale) %x %hx %lx 12

7 ESEMPIO 1 #include <stdio.h> main() { float z = ; int ret = 5; char msg[50] = "Finalmente si stampa!"; printf("valori: ret=%d, z=%f, msg=%s\n", ret, z, msg); } int (decimale) float stringa 13 ESEMPIO 2 La stringa di formato può #include <stdio.h> essere per comodità spezzata in più stringhe, che vengono main() { concatenate automaticamente int a; printf("immettere un carattere: "); a = getchar(); printf("\n%c rappresenta %d come intero" "decimale, %o in ottale e %x in hex", a, a, a, a); } char int (ottale) int (decimale) int (esadecimale) 14

8 Sintassi: INPUT con FORMATO: scanf() int scanf(char frm[], add1,, addn) la funzione legge dal canale di input tanti campi quanti ne specifica la stringa di formato frm[], e li pone in memoria agli indirizzi denotati da add1,, addn restituisce il numero di campi letti (0 se non ha letto nulla), o EOF in caso di errore 15 INPUT con FORMATO: scanf() La stringa di formato frm[] int scanf(char frm[], add1,, addn) specifica esattamente ciò che ci si aspetta in input, tramite specifiche %carattere Formati per caratteri e stringhe: tipi carattere e stringhe (formato unico) carattere singolo %c stringa di caratteri %s NB: scanf() considera finita la stringa al primo spazio o separatore che incontra. Quindi non si può usare scanf() per leggere una stringa contenente spazi 16

9 INPUT con FORMATO: scanf() Formati per numeri: tipi interi normale short long (signed) int %d %hd %ld unsigned int (decimale) %u %hu %lu unsigned int (ottale) %o %ho %lo unsigned int (esadecimale) %x %hx %lx tipi reali fixed-pt. esp. varia float %f %e %g double %lf %le %lg long double %Lf %Le %Lg 17 #include <stdio.h> ESEMPIO 3 main() { float x; int ret, i; char name[50]; printf("inserisci un numero decimale, "); printf("un float e una stringa con meno"); printf("di 50 caratteri e senza spazi: "); ret = scanf("%d%f%s", &i, &x, name); } printf("%d valori letti: %d, %f, %s", ret, i, x, name); indirizzo di una variabile int indirizzo di una variabile float nome di una stringa (è già un indirizzo) 18

10 #include <stdio.h> ESEMPIO 3 (variante) main() { Gli indirizzi possono essere float x; int ret, i; passati chara name[50]; scanf() anche int *pi = &i; attraverso idonei puntatori float *px = &x; printf("inserisci un numero decimale, "); printf("un float ed una stringa con meno"); printf("di 50 caratteri e senza spazi: "); ret = scanf("%d%f%s", pi, px, name); } printf("%d valori letti: %d, %f, %s", ret, i, x, name); 19 scanf(): PRECISAZIONI La stringa di formato frm[] è una sequenza di specifiche %carattere senza spazi o altri caratteri intermedi. Ad esempio: scanf("%d%d%f",...) non deve contenere messaggi scanf("inserire un int: d%", ) Infatti, la stringa di formato descrive esattamente quello che ci deve essere in input, non ha nulla a che fare con i messaggi di output 20

11 Inserire spazi o altri caratteri nella stringa di formato di scanf() è quindi possibile, ma ha il significato di richiedere che tali caratteri siano obbligatoriamente presenti in input: se mancano, scanf() dà errore Ad esempio: scanf(): PRECISAZIONI scanf("%c %c %c", &ch1, &ch2, &ch3); scanf("%c%c%c", &ch1, &ch2, &ch3); Nella prima forma, i caratteri devono essere separati da uno spazio, altrimenti... sì, ma SI 21 scanf(): PRECISAZIONI Questa caratteristica può essere sfruttata per leggere dati formattati in modo particolare, come ad esempio una data (gg/mm/aa) scanf("%d/%d/%d", &g, &m, &a); In questo modo, scanf() filtra automaticamente i dati, eliminando le barre Se manca anche solo una barra errore scanf() elimina automaticamente gli spazi di separazione fra i campi Piccolo esercizio: come usare scanf() per leggere un char dopo aver letto un altro dato in precedenza? 22

12 ESEMPIO 4 Leggere (e poi riscrivere) nome, cognome, e data di nascita di una persona #include <stdio.h> main() { struct { char cognome[20], nome[20]; int g, m, a; } p; printf("cognome, nome e data di nascita: "); scanf("%s%s%d/%d/%d", p.cognome, p.nome, &p.g, &p.m, &p.a); printf("%s %s è nato il %d/%d/%d\n", p.cognome, p.nome, p.g, p.m, p.a); } Gli spazi di separazione sono eliminati automaticamente 23

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

Подробнее

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

Подробнее

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

Подробнее

Input/output in C e in C++

Input/output in C e in C++ FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Input/output in C e in C++ 2001 Pier Luca Montessoro - Davide Pierattoni

Подробнее

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

Подробнее

Le funzioni, e le istruzioni di input/output

Le funzioni, e le istruzioni di input/output Linguaggio C Le funzioni, e le istruzioni di input/output 1 Funzioni! Sono sottoprogrammi per svolgere un particolare compito! Sequenze di istruzioni (raggruppate tramite le parentesi graffe) alle quali

Подробнее

Variabili e Istruzioni

Variabili e Istruzioni Exit Menù Variabili e Istruzioni 1 Le Variabili Una VARIABILE è un oggetto identificato da un NOME e da uno STATO, detto CONTENUTO o VALORE. Possiamo immaginarla come una scatola contenuto Pippo 11 nome

Подробнее

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

Подробнее

Il sistema C è formato dal linguaggio C, dal preprocessore, dal compilatore, dalle librerie e da altri strumenti di supporto.

Il sistema C è formato dal linguaggio C, dal preprocessore, dal compilatore, dalle librerie e da altri strumenti di supporto. Sistema C e organizzazione del codice Il sistema C è formato dal linguaggio C, dal preprocessore, dal compilatore, dalle librerie e da altri strumenti di supporto. Un programma C è costituito da un insieme

Подробнее

Linguaggio C: Stringhe di caratteri e File

Linguaggio C: Stringhe di caratteri e File Linguaggio C: Stringhe di caratteri e File ESEMPIO: Lettura da tastiera e stampa a video di una sequenza di caratteri #include main() int c; printf("inserisci dei caratteri"); printf("(

Подробнее

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore I puntatori Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore...... L operatore & fornisce l indirizzo di un oggetto: p = &c; assegna a p l indirizzo di c, i.e., p

Подробнее

Primi passi col linguaggio C

Primi passi col linguaggio C Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta

Подробнее

Realizzare un programma che legga da input tre numeri interi e stampi a video la loro somma e la media.

Realizzare un programma che legga da input tre numeri interi e stampi a video la loro somma e la media. Esercizio 1 Realizzare un programma che legga da input tre numeri interi e stampi a video la loro somma e la media. #include Esercizio 1 - Soluzione int main() int num1, num2, num3, somma; float

Подробнее

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2

Подробнее

Esercitazione 6. Array

Esercitazione 6. Array Esercitazione 6 Array Arrays Array (o tabella o vettore): è una variabile strutturata in cui è possibile memorizzare un numero fissato di valori tutti dello stesso tipo. Esempio int a[6]; /* dichiarazione

Подробнее

Informatica 1. Corso di Laurea Triennale in Matematica. Gianluca Rossi

Informatica 1. Corso di Laurea Triennale in Matematica. Gianluca Rossi Informatica 1 Corso di Laurea Triennale in Matematica Gianluca Rossi [email protected] Dipartimento di Matematica Università di Roma Tor Vergata 11: Stringhe (www.informatica-uno.blogspot.com)

Подробнее

Librerie C. Corso di Linguaggi e Traduttori 1 AA Corso di Linguaggi e Traduttori 1 AA stdio.h

Librerie C. Corso di Linguaggi e Traduttori 1 AA Corso di Linguaggi e Traduttori 1 AA stdio.h Corso di Linguaggi e Traduttori 1 AA 2004-05 1 Corso di Linguaggi e Traduttori 1 AA 2004-05 stdio.h 2 Funzioni comuni di I/O? Le piu' comuni funzioni che permettono I/O sono getchar() e putchar():? int

Подробнее

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma. Unità Didattica 1 Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C UNIX (1969) - DEC PDP-7 Assembly Language BCPL - un OS facilmente accessibile che fornisce potenti strumenti

Подробнее

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

I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002 I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002 dott.ssa Francesca A. Lisi [email protected] Sommario Generalità sui file in C I file ad accesso sequenziale I file di testo Riferimenti

Подробнее

Struttura dei programmi C

Struttura dei programmi C Programmi C Struttura dei Programmi C Dichiarazione delle variabili Operazioni di Ingresso/Uscita Fondamenti di Informatica 1 Struttura dei programmi C Un programma C deve contenere, nell'ordine: una parte

Подробнее

Alfabeto ed elementi lessicali del linguaggio C

Alfabeto ed elementi lessicali del linguaggio C Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Alfabeto ed elementi lessicali del linguaggio C Pietro Di Lena - [email protected] s t a t i c s h o r t l e g s ; i n

Подробнее

File e puntatori a file

File e puntatori a file File e puntatori a file Vitoantonio Bevilacqua [email protected] La libreria stdio.h mette a disposizione delle funzioni che hanno la peculiarità di trattare con questa nuova tipologia di

Подробнее

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C Tipi di dati strutturati e Linguaggio C Record o strutture Il costruttore struct in C Dati strutturati Record Un record o struttura è una struttura dati ottenuta aggregando elementi di tipo diverso che

Подробнее

Stringhe e allocazione dinamica della memoria

Stringhe e allocazione dinamica della memoria Stringhe e allocazione dinamica della memoria Esercizio Scrivere un programma strings.c che legge da standard input una sequenza di parole separate da uno o più spazi, e stampa le parole lette, una per

Подробнее

IL CONCETTO DI FILE. È illecito operare oltre la fine del file.

IL CONCETTO DI FILE. È illecito operare oltre la fine del file. IL CONCETTO DI FILE Un file è una astrazione fornita dal sistema operativo, il cui scopo è consentire la memorizzazione di informazioni su memoria di massa. Concettualmente, un file è una sequenza di registrazioni

Подробнее

Il linguaggio C Istruzione di assegnamento e operatori

Il linguaggio C Istruzione di assegnamento e operatori Il linguaggio C Istruzione di assegnamento e operatori { /*definizioni variabili: */ char y= a ; /*codice(a)=97*/ int x,x,y; unsigned int Z; float SUM; double r; /* parte istruzioni: */ X=27; Y=4; Z =

Подробнее

Stringhe. In C le stringhe ben formate sono in realtà array di caratteri terminati sempre da un carattere speciale, \0, detto anche

Stringhe. In C le stringhe ben formate sono in realtà array di caratteri terminati sempre da un carattere speciale, \0, detto anche Fondamenti di Informatica T-1 modulo 2 Laboratorio 04: stringhe 1 Stringhe In C le stringhe ben formate sono in realtà array di caratteri terminati sempre da un carattere speciale, \0, detto anche terminatore

Подробнее

Struttura dati FILE. Concetto di FILE

Struttura dati FILE. Concetto di FILE Struttura dati FILE Concetto di FILE Per poter mantenere disponibili dei dati tra diverse esecuzioni di un programma (PERSISTENZA dei dati), è necessario poterli archiviare su memoria di massa. Un file

Подробнее

La formattazione dell input/output in C

La formattazione dell input/output in C CAPITOLO 9 La formattazione dell input/output in C Obiettivi Comprendere i flussi di input e di output. Essere in grado di usare tutte le capacità di formattazione della stampa. Essere in grado di usare

Подробнее

---------------------------------------------------------------- Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero

---------------------------------------------------------------- Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero ---------------------------------------------------------------- Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero delle variabili a cui possono essere assegnati gli indirizzi

Подробнее

Le Funzioni e la Ricorsione

Le Funzioni e la Ricorsione Aula V Dip. di Matematica G. Castelnuovo Univ. di Roma La Sapienza Le Funzioni e la Ricorsione Igor Melatti Slides disponibili (assieme ad altro materiale) in: http://www.dsi.uniroma1.it/ melatti/programmazione1.2007.2008.html

Подробнее

Espressione di chiamata di funzione

Espressione di chiamata di funzione Avvertenza Quanto segue NON è un libro, ma è una copia dei lucidi usati a lezione che NON sostituisce i libri di testo adottati e consigliati per l insegnamento di Informatica Generale. Questa copia è

Подробнее

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

Подробнее

Linguaggio C: introduzione

Linguaggio C: introduzione Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: introduzione La presente dispensa e da utilizzarsi

Подробнее

Aggregati di dati eterogenei: il tipo struct. Esercizi risolti

Aggregati di dati eterogenei: il tipo struct. Esercizi risolti Esercizi risolti 1 Esercizio Si vuole realizzare un tipo utilizzato per informazioni su operazioni di vendita, avente i seguenti campi: codice: numero intero indicante il codice di riferimento dell articolo

Подробнее

Lezione 8 Struct e qsort

Lezione 8 Struct e qsort Lezione 8 Struct e qsort Rossano Venturini [email protected] Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 3 QuickSort strambo Modificare il Quicksort

Подробнее

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

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani ([email protected])

Подробнее

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

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Università di Roma Tre Facoltà di Scienze M.F.N. Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani ([email protected])

Подробнее

Informatica 1. Prova di recupero 21 Settembre 2001

Informatica 1. Prova di recupero 21 Settembre 2001 Informatica 1 Prova di recupero 21 Settembre 2001 Si risolvano i seguenti esercizi. Ai fini della determinazione del voto finale il loro punteggio andrà sommato al punteggio del laboratorio. Il tempo complessivo

Подробнее

Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010

Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010 Tipi di dati scalari (casting e puntatori) Alessandra Giordani [email protected] Lunedì 10 maggio 2010 http://disi.unitn.it/~agiordani/ I tipi di dati scalari I tipi aritmetici, i tipi enumerativi

Подробнее

Algoritmi e basi del C Struttura di un programma

Algoritmi e basi del C Struttura di un programma Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio [email protected] Ver. aggiornata al 17 Marzo 2015 Compitini Compitini di INFO: 24 Aprile 2015 4.15pm @ C.G.1 (Ed. 9) 21

Подробнее

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Dipartimento di Elettronica, Informazione e Bioingegneria Informatica B Sezione D Franchi Alessio Mauro,

Подробнее