LIBRERIE STANDARD in C. LIBRERIE STANDARD in C
|
|
|
- Ivo Nicolosi
- 9 anni fa
- Просмотров:
Транскрипт
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 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
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 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++
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... 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
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
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 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.
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 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...... 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
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.
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
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 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 [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
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. 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 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
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
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 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 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 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 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 { /*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
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 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
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 delle variabili a cui possono essere assegnati gli indirizzi
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
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
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
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
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 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
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
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 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 [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 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
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,
