Úvod:
Printf() a Scanf() sú vstavané funkcie knižnice v jazyku C, ktoré vykonávajú formátovaný vstup a formátovaný výstup funkcie. Tieto funkcie sú definované a deklarované v hlavičkový súbor stdio.h . The 'f' v printf a scanf znamenať 'formátovaný' . Takže obe funkcie printf() a scanf() použite kódy v rámci formátovacieho reťazca na určenie spôsobu formátovania výstupných alebo vstupných hodnôt. Na použitie potrebujeme importovať hlavičkový súbor printf() a scanf() :
#include
V tomto článku budeme diskutovať o rozdieloch medzi printf() a scanf(), ale pred diskusiou o rozdieloch musíme vedieť o printf() a scanf() s ich syntaxou a príkladmi.
Printf():
to výtlačkov čokoľvek medzi dvojité úvodzovky s špecifikátory formátu %c, %d,%f, atď., aby sa zobrazila hodnota premennej alebo konštanty a môže mať aj znaky escape sekvencie, napr , pre Nový riadok, a horizontálna záložka , resp.
java dlhá na reťazec
Syntax:
printf('(string) %format_specifier (string)',variable);
Scanf():
Umožňuje nám čítať jednu alebo viacero hodnôt zadaných používateľom cez klávesnicu na konzole. Môžeme umiestniť toľko špecifikátory formátu toľko vstupov, koľko chceme s formátom alebo bez neho.
Syntax:
scanf(%format_specifier, &pointer_to_variable);
Reťazec špecifikátora formátu:
V prvom parametri printf a scanf , míňame formátovací reťazec alebo reťazec špecifikátora formátu a určíme, aký typ hodnoty sa používateľ chystá zadať.
Dátový typ | Konverzia | formátovací reťazec |
---|---|---|
Celé číslo | krátke celé číslo | %d alebo % i |
krátke nepodpísané | % in | |
dlho podpísaný | % ld | |
dlho nepodpísané | % lu | |
hexadecimálne číslo bez znamienka | % X | |
osmičkový bez znamienka | %O | |
Reálny | plavák | % f alebo % g |
dvojitý | %lf | |
podpísaný znak | %c | |
nepodpísaný char | %c | |
reťazec | %s |
Napríklad, ak používateľ zadá dvadsať ako vstup, ako dvadsať je a desiatková celočíselná hodnota , špecifikujeme všetky desiatkové celočíselné hodnoty v C pomocou %d špecifikátor formátu . podobne, float hodnoty sú špecifikované pomocou %f .
css zarovnávanie obrázkov
Základný kód pre Printf() a Scanf():
Príklad 1:
#include int main() { int a, b; int sum = 0, sub = 0, mul = 0; printf('Please enter the two values:'); /* Read input */ scanf('%d%d', &a, &b); sum = a+b; sub = a-b; mul = a*b; /* Print output */ printf('The sum = %d sub = %d mul = %d', sum, sub, mul); return 0; }
Výkon:
Please enter the two values:8 6 The sum = 14 sub = 2 mul = 48
Vysvetlenie:
Vo vyššie uvedenom programe používame scanf() na čítanie vstupov z konzoly a ich uloženie do premenných a a b. Potom vykonávame aritmetické operácie ako napr doplnenie , odčítanie , a násobenie a neskôr uložiť výsledky do tri nové premenné (Sum, Sub, Mul). Nakoniec pomocou funkcia printf(). , tlačíme výsledky.
Príklad 2:-
#include int main() { int a; scanf('%d %d', &a); printf('Execution finished...'); return 0; }
Vo vyššie uvedenom programe scanf() načíta dva vstupy z programu, aj keď odovzdávame jednu premennú, pretože sme zadali dva špecifikátory formátu . Vždy pamätajte, In scanf()/printf() všetko špecifikátory formátu ktoré prejdeme, by malo byť rovnaké, inak sa môžu vyskytnúť neočakávané chyby pri spustení.
Príklad 3:
int main() { int a, b; scanf('%d', &a, &b); printf('Execution finished...'); return 0; }
Výkon:
5 Execution finished...
Vysvetlenie:
Vo vyššie uvedenom programe scanf() číta iba jeden vstup od používateľa, pretože sme zadali iba jeden špecifikátor formátu . Takže z tohto príkladu sme dospeli k záveru, že žiadny zo vstupov nebude prijatý v závislosti od počtu špecifikátory formátu .
Príklad 4:
#include int main() { int a; scanf('%d', a); printf('Execution finished'); }
Výkon:
6 Segmentation fault
Vysvetlenie:
Vo vyššie uvedenom programe odovzdávame hodnotu premennej scanf() namiesto premennej adresy. Povedie to k a chyba pri behu . V Linuxe dostaneme chybu segmentácie.
testovanie výkonu
Príklad 5:
#include int main() { int a = 10; int b = 20; printf('the value of a = %d, the value of b = %d', a, b); }
Výkon:
the value of a = 10, the value of b = 20
Vysvetlenie:
Vo vyššie uvedenom programe, kedy printf naskenuje formátovací reťazec, nahradí ho špecifikátory formátu (%d) so skutočnými hodnotami, ku ktorým prechádzame printf() . tj prvý špecifikátor formátu bude nahradený prvou hodnotou, ktorú zadáme printf(), a tak ďalej.
Základné rozdiely medzi Printf() a Scanf()
Niekoľko rozdielov medzi printf a scanf je: -