× Aktuálně z oboru

Programátoři po celém světě dnes slaví Den programátorů [ clanek/2018091300-programatori-po-celem-svete-dnes-slavi-den-programatoru/ ]
Celá zprávička [ clanek/2018091300-programatori-po-celem-svete-dnes-slavi-den-programatoru/ ]

Programování v jazyce C - formátované čtení dat, funkce scanf

[ http://programujte.com/profil/20356-tomas-voralek/ ]Google [ ?rel=author ]       [ http://programujte.com/profil/20356-petra-pakostova/ ]Google [ ?rel=author ]       18. 8. 2006       59 151×

V tomto díle se podíváme na funkci scanf a některé další možnosti načítání dat

Funkce scanf

Funkce scanf slouží k načítání dat ze standardního vstupu a tyto data ukládá do proměnných které jí předáme jako paramtery s jednou "zvláštností". To si ale vyjasníme o několik řádků níže na praktické ukázce. Funcke scanf má následující syntaxi

int scanf("formát vstupního retezce", seznam promennych);

funkce scanf pracuje tak že načte najednou celou sekvenci danou formátovacím řetězcem který je stejný jako u funkce printf. Jedinou odlišností, kterou zde najdeme, je ta, že u proměnných, do kterých chceme data načítat, musíme použít refenční operátor & ampersand. Ukážeme si to na úříkladu.

Scanf("%lf %lf", &a, &b);

Tento refenční operátor slouží k tomu že se na proměnnou odvoláváme odkazem. To znamená, že takto předáme funkci scanf adresu v paměti, kam má načtenou hodnotu zapsat. K lepšímu pochopení uvedu příklad

int a = 10;
printf("promenna a ma hodnotu %d a lezi na adrese %x\n", a, &a);

Zde předáváme funkci pro výpis dvakrát proměnnou a, ale po druhé používáme referenční operátor, což má za následek, že funkci printf je předána adresa proměnné a, která ji vytiskne v hexadecimálním tvaru. Z toho vyplývá, že použitím referenčního operátoru se odkazujeme na místo v operační paměti, kam se mají data zapsat.

Funkce scanf je velice vhodná, pokud potřebujeme zpracovávat data v nějakém speciálním formátu. Toho budeme využívat později pomocí příbuzné funkce fscanf, která slouží pro čtení ze souboru, ale o tom až později. U funkce scanf si ukážeme ještě jeden příklad, který nám zmíněné chování blíže objasní.

double x, y ;
    printf("Zadejte hodnoty pro a a b\n");
    scanf("x=%lf y=%lf", &x, &y);
    printf("Nacetl jsem %lf, %lf\n", x, y);   

Pokud nyní zadáme na vstup pouze čísla, funkce scanf se čtením neuspěje, protože data očekávala v jiném formátu. Pokud ale zadáme

a = 10.5
b = 100

vše již proběhne v pořádku.

Funkce getcahr / putchar

Tyto dvě funkce představují základní možnost načítání a vypisování znaků. První funkce getchar má následující syntaxi.

int getchar(void);

Funkce nepřebírá žádné parametry, pouze vrací celé celé číslo, co by ASCII kód načteného znaku. Tím se dostáváme k důležité informaci, a tou je ta, že jazyk C vnitřně pracuje se znakovou proměnnou, jako s celým číslem. Druhá funkce putchar

void putchar(int ch);

slouží k výpisu znaku na standardní výstup a přebírá jediný parametr, a tím je celé číslo reprezentující kód znaku který chceme tisknout. Nakonec ukázka, jak pomocí getchar znak načíst, a pomocí putchar zase zpět vypsat.


int ch;
printf("Zadejte alfanumericky znak:");
ch = getchar();
printf("Vytiskneme pomoci putchar:");
putchar(ch);

Článek stažen z webu Programujte.com [ http://programujte.com/clanek/2006072101-programovani-v-jazyce-c-formatovane-cteni-dat-funkce-scanf/ ].