Programování v jazyce C - formátované čtení dat, funkce scanf
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

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

 

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

Google       Google       18. 8. 2006       49 963×

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

Reklama
Reklama

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);

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
0 hlasů
Google
Autor se věnuje programování v jazycích C/C++, GTK+ a Zajímá se o GNU/Linux. Mezi další zájmy patří scifi a četba.

Nové články

Reklama
Reklama
Obrázek ke článku Mobilní datový provoz vzroste sedmkrát.

Mobilní datový provoz vzroste sedmkrát.

Už v roce 2021 bude mít více obyvatel zeměkoule mobilní telefon (5,5 miliardy) než bankovní účet (5,4 miliardy), tekoucí vodu (5,3 miliardy) nebo pevnou telefonní linku (2,9 miliardy). Vyplývá to z analytické studie Cisco Visual Networking Index (VNI) Global Mobile Data Traffic Forecast (2016 to 2021). Analytici také předpovídají, že se tento výrazný růst, spolu s rozmachem chytrých telefonů a připojení do internetu věcí promítne i do celkového objemu přenesených mobilních dat. Studie říká, že do roku 2021 vzroste sedminásobně, k čemuž přispěje i zvyšování přenosové rychlosti sítí a nárůst sledování videa na mobilních zařízeních.

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032017 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý