Approfondimento : printf

Documenti analoghi
Approfondimento : printf

Introduzione alla programmazione in C

Ingresso ed Uscita in C. Informatica 1 / 15

Ingresso ed Uscita in C. Luca Abeni

Input/Output di numeri

1

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

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

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

Parsing. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico

Le funzioni, e le istruzioni di input/output

Lezione V Fondamenti di Ingresso/Uscita

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

Programmazione (imperativa)

Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C

INPUT E OUTPUT DI VALORI NUMERICI

scanf: STRINGA DI FORMATO

LIBRERIE STANDARD in C. LIBRERIE STANDARD in C

Linguaggio C. Tipi predefiniti. Università degli Studi di Brescia. Prof. Massimiliano Giacomin. Prof. M. Giacomin

LIBRERIE STANDARD in C Le librerie standard

LIBRERIE STANDARD in C

Introduzione alla programmazione. Alice Pavarani

I/O da tastiera + Alessandra Giordani Lunedì 2 maggio

Espressione di chiamata di funzione

Introduzione alla programmazione in linguaggio C

Introduzione al linguaggio C

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

Un po di ripasso + qualcosa di nuovo

Struttura dei programmi e Variabili

Le variabili nel linguaggio C

Rappresentazione di interi

Dati due punti sul piano calcolare la loro distanza

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 04 Input/Output

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

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

Caratteri e stringhe

Introduzione alle operazioni di I/O con formato e tipi primitivi

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

Laboratorio di programmazione

Corso sul linguaggio C

Primi esempi di programmi. Il tipo int Le variabili Altri tipi interi Operatori di assegnazione

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

Fondamenti di Informatica

Primi programmi in C

Precedenza & associatività degli operatori C

Informatica (A-K) 7. Linguaggio C - 1

Programmare in C. Maurizio Palesi Salvatore Serrano. Valori. Operazioni. Un insieme di valori del tipo. Per operare su tali valori Tipi

C O P Y R I G H T ( C ) W W W. F O N D A M E N T I. I N F O

Introduzione a Unix. Barbara Guidi. Corso Informatica I /2013. Dipartimento di Informatica Università di Pisa

Tipi di dato semplici

Tipi di dato. Unità 2. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi

Programmazione I - Laboratorio

Il primo programma C. Un programma utile. Compilazione & linking con il compilatore GNU. Introduzione alla programmazione in linguaggio C

Corso Programmazione

Caratteri e stringhe

Tipi di dato, Alessandra Giordani Lunedì 7 maggio 2011

LEZIONE 1 LE BASI DEL LINGUAGGIO C

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2009/2010

Esercizi Programmazione I

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

Introduzione al linguaggio C Primi programmi

Lezione 22: Input/Output e Files

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

Precisazione sui tipi in ANSi C

L AMBIENTE CODE BLOCKS E L IO

Elementi di Base del Linguaggio C

Tipi e Valori. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna

Tipi di dato. Unità 2. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

I Fondamenti del Linguaggio

Scrittura formattata - printf

I CARATTERI E LE STRINGHE

Introduzione al C. Lez. 1 Elementi. Rossano Venturini

INFORMATICA. Strutture iterative

L AMBIENTE CODE BLOCKS E L IO

Algoritmi e basi del C

per leggere caratteri: getchar(void); Laboratorio di linguaggi

Tipi di dato. Unità 2. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi

Il linguaggio C. Notate che...

I/O da tastiera e direttive processore. Alessandra Giordani Lunedì 3 maggio

STRUTTURA DI UN PROGRAMMA C!

Laboratorio di Algoritmi

Variabili intere, funzioni e input/ Alessandra Giordani Lunedì 19 marzo

Informatica A+B Politecnico di Milano A.A Elenco delle parole chiave definite in ANSI C

Algoritmi e basi del C Struttura di un programma

L'immissione dei dati di un programma e l uscita dei suoi risultati avvengono attraverso operazioni di lettura e scrittura

Dichiarazioni e tipi predefiniti nel linguaggio C

Algoritmi e basi del C

Lab 03 Scanf e tempo di vita delle variabili

Corso di Informatica A.A

Capitolo 3. Input/Output formattato

Laboratorio di informatica Ingegneria meccanica

Laboratorio di informatica Ingegneria meccanica

La sintassi del C APPENDICE H

Introduzione al C. Lezione 1 Elementi. Rossano Venturini. Pagina web del corso

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

Tipi di dato. Le variabili in C. Problema: dato in input un carattere, se esso è una lettera minuscola, trasformarla in maiuscola.

Transcript:

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

Printf: esempi d'uso Scrivere output ben spaziato ( 1 23 100 ): printf(" %3d %3d %3d \n", a, b, c); Scrivere testo e numeri: printf("%lf %c %lf\n", num1, simb, num2); Trasformare un decimale in esadecimale printf("%x", numero); Stampare solo i primi 3 decimali di un float printf("%.3f", numero);

Printf int printf (const char *format, ); Il formato è una stringa costante (non può essere una variabile stringa) che può contenere : whitespaces: spazi,tabulazioni, invii a capo (\n) caratteri standard (qualunque sequenza di caratteri non bianchi che non inizi per %) specificatori di formato (che iniziano per %) Per dettagli sui segnaposti, vedere http://it.wikipedia.org/wiki/printf#segnaposti_del_formato_printf

Approfondimento : scanf La funzione scanf : legge da standard input (stdin, tastiera) dati complessi è quasi duale a printf (prende un formato e una lista di parametri) ma non del tutto è facilmente fonte di errori e incongruenze

Scanf: esempi d'uso Leggere una data (gg/mm/aaaa): scanf("%2d/%2d/%4d", &giorno, &mese, &anno); Leggere un'operazione aritmetica (su una riga): scanf("%lf %c %lf", &num1, &simb, &num2); Trasformare un esadecimale in decimale: scanf("%x", &numero); Leggere un singolo carattere: scanf(" %c", &carattere); (notate lo spazio prima del %c, necessario perchè questo pattern non elimina eventuali invii a capo e spazi lasciati nel buffer da scanf precedenti).

Scanf: il formato int scanf(const char *format, ); Il formato è una stringa costante (non può essere una variabile stringa) che può contenere : whitespaces: spazi,tabulazioni, invii a capo (\n) caratteri standard (qualunque sequenza di caratteri non bianchi che non inizi per %) specificatori di formato (che iniziano per %)

Il formato Gli specificatori di formato sono così fatti : %[*][width][modifiers]type (le parentesi quadre indicano un elemento opzionale) dove : * width modifiers type Un asterisco fa si che i dati corrispondenti a questo argomento vengano letti dallo stdin ma ignorati (non salvati in un argomento) Specifica il numero massimo di caratteri da leggere per questo argomento Modifica le dimensioni: h : short int (per d, i and n), o unsigned short int (per o, u and x) l : (è una elle minuscola) long int (per d, i and n), o unsigned long int (per o, u and x), o double (per e, f and g) L : long double (per e, f e g) Un carattere che specifica il tipo di dato da leggere (vedi prossima slide)

Il funzionamento La funzione : legge lo stdin e prova a riconoscere elementi così come indicati dal formato elimina automaticamente gli whitespace iniziali (quasi sempre) copia nelle variabili passate come argomento gli elementi riconosciuti con successo ritorna il numero di elementi riconosciuti

La logica L'input da tastiera è bufferizzato e resta nel buffer finchè qualcuno non lo rimuove. scanf cerca nel buffer i pattern (numeri decimali, floating poing, caratteri, ecc...) e mangia" (cioè toglie dal buffer) quelli che riconosce

Il formato Gli specificatori di formato sono così fatti : %[*][width][modifiers]type (le parentesi quadre indicano un elemento opzionale) dove : * width modifiers type Un asterisco fa si che i dati corrispondenti a questo argomento vengano letti dallo stdin ma ignorati (non salvati in un argomento) Specifica il numero massimo di caratteri da leggere per questo argomento Modifica le dimensioni: h : short int (per d, i and n), o unsigned short int (per o, u and x) l : (è una elle minuscola) long int (per d, i and n), o unsigned long int (per o, u and x), o double (per e, f and g) L : long double (per e, f e g) Un carattere che specifica il tipo di dato da leggere (vedi prossima slide)

Specificatori di tipo (type) c type descrizione tipo argomento Singolo carattere: legge il carattere successivo. Se è impostata una width differente da 1, legge width caratteri ma nessun terminatore di stringa viene aggiunto. NON ELIMINA GLI SPAZI INIZIALI. d Intero decimale: un numero con un segno (+ o -) opzionale prima. e, E, f, F, g, G Virgola mobile: numero decimale con un punto decimale, eventualmente preceduto da un segno (+ o -) ed eventualmente seguito da e (o E) ed un altro numero decimale. Per esempio: -732.103 o 7.12e4 char * int * float * o Intero ottale int * s Stringa di caratteri: legge una stringa generica di caratteri fino al prossimo whitespace. E' fortemente consigliato di usarlo sempre con uno width prefissato. char * u Intero decimale unsigned unsigned int * x, X Intero esadecimale int *

Esempi d'uso Leggere una data (gg/mm/aaaa): scanf("%2d/%2d/%4d", &giorno, &mese, &anno); Leggere un'operazione aritmetica (su una riga): scanf("%lf %c %lf", &num1, &simb, &num2); Trasformare un esadecimale in decimale: scanf("%x", &numero); Leggere un singolo carattere: scanf(" %c", &carattere); (notate lo spazio prima del %c, necessario perchè questo pattern non elimina eventuali invii a capo e spazi lasciati nel buffer da scanf precedenti).