headerphoto

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:

%cznak
%d %icelé desítkové číslo
%ocelé číslo v osmičkové soustavě
%x %Xcelé číslo v šestnáctkové soustavě
%lddlouhé celé číslo (long int)
%uneznaménkové celé desítkové číslo (unsigned)
%freálné číslo (float)
%lfdlouhé reálné číslo (long double, double)
%ereá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.

Design downloaded from Free Templates - your source for free web templates