Formátovaný vstup a výstup
V programech často používáme hodnoty, které získáváme od uživatele zadáním z klávesnice. Po výpočtech zase potřebujeme výsledky zobrazit na obrazovce. K tomu slouží standardní funkce pro vstup a výstup.
Pokud chceme použít standardní funkce pro načtení hodnot z klávesnice a jejich vypsání na obrazovku, musíme vložit do programu hlavičkový soubor stdio.h. To provedeme příkazem:
#include <stdio.h>
Pro načtení hodnot z klávesnice můžeme použít funkci scanf(). V závorkách za názvem funkce uvedeme nejdřív formátovací řetězec (uzavřen v uvozovkách), který určuje, o jaký typ hodnoty se jedná. Dále uvedeme adresu proměnné (případně seznam adres více proměnných), kam chceme hodnotu uložit. Pro získání adresy jednoduché proměnné používáme obvykle operátor &. Např. pro získání adresy proměnné x použijeme zápis &x.
Určení datového typu ve formátovacím řetězci:
%c | znak (char) |
%d %i | celé desítkové číslo (int) |
%o | celé číslo v osmičkové soustavě |
%x %X | celé číslo v šestnáctkové soustavě |
%ld | dlouhé celé číslo (long int) |
%u | neznaménkové celé desítkové číslo (unsigned) |
%f | reálné číslo (float) |
%lf | dlouhé reálné číslo (long double, double) |
%e | reálné číslo v semilogaritmickém tvaru (float, double) |
%s | řetězec |
int x, a, b;
float y;
scanf("%d", &x); // načte 1 celé číslo a uloží do proměnné x
scanf("%f", &y); // načte 1 reálné číslo a uloží do y
scanf("%d%d", &a, &b); // načtou se dvě celá čísla oddělená bílým znakem
// první se uloží do proměnné a, druhé do b
Poznámka: Funkce scanf() načítá číselné hodnoty ze vstupního zásobníku následujícím způsobem: vynechá bílé znaky, přečte číselnou hodnotu po nejbližší bílý znak a uloží ji na určenou adresu. Znamená to, že po načtení hodnot můžou ve vstupním zásobníku zůstat bílé znaky (např. Enter). Když tedy střídavě načítáme číselné hodnoty a znaky, případně řetězce, musíme vždy vstupní zásobník vyprázdnit. K tomu lze výhodně použít příkaz fflush(stdin).
Pro výpis hodnot a textů na obrazovku můžeme použít funkci printf(). Při použití funkce uvedeme formátovací řetězec a seznam proměnných, kterých hodnoty chceme vypisovat. Formátovací řetězec obsahuje často (na rozdíl od funkce scanf()) další doprovodné texty. Kromě běžných znaků můžeme použít i tzv. escape sekvence, např. \n, \t, \r, \b, \\ a další.
Ukázky použití funkce printf():
int x=1, a=2, b=3;
float y=2.57;
// vypis textu a odradkovani:
printf("Priklady vypisu hodnot na obrazovku:\n\n");
// jednoduchy vypis celociselne promenne:
printf("%d", x);
// vypis celociselne promenne s textem:
printf("Hodnota promenne x je %d\n", x);
// vypis hodnot promenne pouzitim vypoctu:
printf("Soucet: %d + %d = %d\n", a, b, a+b);
// vypis realne promenne:
printf("Hodnota realne promenne y je %f\n", y);
// vypis realne promenne se zaokrouhlenim na 1 desetinne misto:
printf("Hodnota realne promenne y na 1 desetinne misto je %.1f\n", y);
// vypis realne promenne - vhodne pro tabulkovy vypis
printf("%10.2f\n", y);
Př. Program načte z klávesnice poloměr kružnice a vypočítá její obvod a obsah.
#include <stdio.h> #include <stdlib.h> int main() { float r, obvod, obsah; printf("Zadejte polomer : "); scanf("%f",&r); obvod = 2*3.141592 * r; obsah = 3.141592 * r * r; printf("\nObvod kruhu je %.2f\n", obvod); printf("\nObsah kruhu je %.2f\n", obsah); printf("\n\n"); system("pause"); return 0; }
V programu je vhodné místo hodnoty 3.141592 použít vlastní symbolickou konstantu (použitím define) nebo konstantu M_PI z knihovny math.h.