logo

Rozdiel medzi printf() a scanf() v C

Ú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: -

    funkcia printf(). vydáva dáta na štandardný výstup, t.j. do konzoly. Na rozdiel od toho, funkcia scanf(). načítava dáta zo štandardného vstupu, teda vstupných zariadení printf() zriedka používa ukazovateľ v niekoľkých prípadoch, ale scanf() vždy používa ukazovateľ na priradenie hodnoty danej premennej. printf() a scanf() obe majú rovnaký návratový typ celé číslo . The printf() vráti počet znakov, ktoré úspešne vytlačil na konzole, zatiaľ čo scanf() sa vracia 0,1 alebo EOF na základe poskytnutého špecifikátora formátu.