| Guida Linguaggio C: L'Input | |||
3 Dicembre 2007 |
C
|
||
Introduzione
In C esistono tre stream predefiniti, stdin (Standard Input), stdout (Standard Output) e stderr (Standard Error). Il file stdin è associato alla tastiera, ogni lettura da tastiera viene vista come una lettura dal file stdin, il file stdout è associato al dispositivo di visualizzazione (il monitor), ogni scrittura sul file stdout viene vista come una scrittura sul monitor, il file stderr è associato tipicamente con il monitor ed è utilizzato per visualizzare messaggi di errore, ogni scrittura sul file stdout viene vista come una scrittura sul monitor.#include <stdio.h>FILE *stdin;FILE *stdout;FILE *stderr;
Il C mette a disposizione delle funzioni sia per l'input che per l'output tramite la Standard Library, funzioni che sono dichiarate in stdio.h.
L'Input
Le funzioni a disposizione per l'input sono le seguenti| Funzione | Descrizione | |
|---|---|---|
| int | getc(FILE *stream) | Legge un carattere dallo stream indicato e restituisce il carattere letto convertendolo in un intero. |
| int | getchar(void) | Legge un carattere da stdin. |
| int | scanf(char *format, args ...) | Legge una sequenza di caratteri da stdin, convertendoli in base alla stringa di formattazione format. |
| char* | gets (char* s) | Legge una riga da stdin. |
getc
La funzione getc legge un carattere dallo stream indicato e restituisce il carattere letto convertendolo in un intero. Se si è raggiunta la fine del file restituisce EOF, altrimenti restituisce il carattere letto convertito in un intero. Se si è verificato un errore restituisce EOF.#include <stdio.h>int getc(FILE *f);
Esempio
Nell'esempio si leggono caratteri dallo standard input (stdin) fino a quando non viene digitato un particolare carattere, corrispondente al carattere ASCII 32.
#include <stdio.h>main(){int c;doc = getc(stdin);while (c != 32);}
Nell'esempio si leggono caratteri dallo standard input (stdin) fino a quando non viene digitato un particolare carattere, corrispondente al carattere ASCII 32.
getchar
La funzione getchar() legge un carattere da stdin. Equivale a getc(stdin). Se si raggiunge la fine del file restituisce EOF, se si verifica un errore restituisce EOF.#include<stdio.h>int getchar(void);
Esempio
Nell'esempio si leggono caratteri dallo standard input (stdin) fino a quando non viene digitato un particolare carattere, corrispondente al carattere ASCII 32.
#include <stdio.h>main(){int c;doc = getchar();while (c != 32);}
Nell'esempio si leggono caratteri dallo standard input (stdin) fino a quando non viene digitato un particolare carattere, corrispondente al carattere ASCII 32.
scanf
La funzione scanf() legge una sequenza di caratteri da stdin e li pone nelle variabili, i cui puntatori sono passati come argomenti della funzione, convertendoli in base alla stringa di formattazione format.#include <stdio.h>int scanf(const char *format, ...);
Esempio
Viene letta una sequenza di caratteri che viene posta, dopo aver convertito i caratteri come specificato nella stringa di formato ("%s %s %d"), nelle variabili indicate.
#include <stdio.h>main(){char nome[30], cognome[30];int eta;printf("Inserire nome, cognome ed età\n");scanf("%s %s %d",&nome, &cognome, &eta);}
Viene letta una sequenza di caratteri che viene posta, dopo aver convertito i caratteri come specificato nella stringa di formato ("%s %s %d"), nelle variabili indicate.
Relativamente alla formattazione, le specifiche di conversione che si possono usare nella stringa di formattazione sono le stesse che si possono utilizzare nella printf e viceversa.
gets
La funzione gets legge una riga dallo standard input e la memorizza nell'area di memoria puntata da s. Legge caratteri dallo standard input fino a quando non incontra un carattere di newline o fino a quando non incontra la fine del file.Restituisce la sequenza di caratteri letta, priva del carattere newline o di EOF, aggiungendo come ultimo carattere il carattere nullo ('\0'), se dopo aver letto alcuni caratteri si arriva alla fine del file restituisce NULL e quei caratteri letti sono restituiti in s. Se si verifica un errore restituisce NULL.
#include <stdio.h>char* gets (char* s);
Esempio
La gets legge la sequenza di caratteri dallo stdin, fino a quando non incontra newline o EOF, e inserisce i caratteri all'interno dell'array nome, aggiungendo come ultimo carattere il carattere nullo.
Analogamente in seguito legge una nuova sequenza di caratteri, fino a quando non incontra newline o EOF, e li inserisce nell'array cognome, aggiungendo come ultimo carattere il carattere nullo.
#include <stdio.h>main(){char nome[30], cognome[30];printf("Inserire il nome\n");gets(nome);printf("Inserire il cognome\n");gets(cognome);}
La gets legge la sequenza di caratteri dallo stdin, fino a quando non incontra newline o EOF, e inserisce i caratteri all'interno dell'array nome, aggiungendo come ultimo carattere il carattere nullo.
Analogamente in seguito legge una nuova sequenza di caratteri, fino a quando non incontra newline o EOF, e li inserisce nell'array cognome, aggiungendo come ultimo carattere il carattere nullo.

3 Dicembre 2007