logo

Rozdíl mezi printf() a scanf() v C

Úvod:

Printf() a Scanf() jsou vestavěné funkce knihovny v jazyce C, které provádějí formátovaný vstup a formátovaný výstup funkcí. Tyto funkce jsou definovány a deklarovány v hlavičkový soubor stdio.h . The 'F' v printf a scanf znamená 'formátovaný' . Tedy obě funkce printf() a scanf() použijte kódy v rámci formátovacího řetězce k určení, jak mají být formátovány výstupní nebo vstupní hodnoty. K použití potřebujeme importovat soubor záhlaví printf() a scanf() :

 #include 

V tomto článku budeme diskutovat o rozdílech mezi printf() a scanf(), ale než budeme diskutovat o rozdílech, musíme vědět o printf() a scanf() s jejich syntaxí a příklady.

Printf():

To tiskne cokoliv mezi dvojité uvozovky s specifikátory formátu %c, %d,%f, atd., aby se zobrazila hodnota proměnné nebo konstanty a může mít také znaky escape sekvence jako , pro nový řádek, a horizontální záložka , resp.

salman khan věk

Syntax:

 printf('(string) %format_specifier (string)',variable); 

Scanf():

Umožňuje nám číst jednu nebo více hodnot zadaných uživatelem prostřednictvím klávesnice na konzole. Můžeme jich umístit tolik specifikátory formátu tolik vstupů, kolik chceme s formátem nebo bez něj.

Syntax:

 scanf(%format_specifier, &pointer_to_variable); 

Řetězec specifikátoru formátu:

V prvním parametru printf a scanf , míjíme formátovací řetězec nebo řetězec specifikátoru formátu a určíme, jaký typ hodnoty se uživatel chystá zadat.

Datový typ Konverze formátovací řetězec
Celé číslo krátké celé číslo %d nebo % i
krátké nepodepsané % v
dlouho podepsaný % ld
dlouho nepodepsané % lu
šestnáctkové číslo bez znaménka % X
osmičkový bez znaménka
Nemovitý plovák % f nebo % g
dvojnásobek %lf
podepsaný znak %C
nepodepsaný char %C
tětiva %s

Například pokud uživatel zadá dvacet jako vstup, jako dvacet je desetinná celočíselná hodnota , specifikujeme všechny dekadické celočíselné hodnoty v C pomocí Specifikátor formátu %d . Podobně, plovoucí hodnoty jsou specifikovány pomocí %F .

distributivní zákon booleovská algebra

Základní kód pro Printf() a Scanf():

Pří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ýstup:

 Please enter the two values:8 6 The sum = 14 sub = 2 mul = 48 

Vysvětlení:

Ve výše uvedeném programu používáme scanf() číst vstupy z konzoly a ukládat je do proměnných a & b. Poté provádíme aritmetické operace jako přidání , odčítání , a násobení a později uložit výsledky do tři nové proměnné (Sum, Sub, Mul). Nakonec pomocí funkce printf(). , tiskneme výsledky.

Příklad 2:-

 #include int main() { int a; scanf('%d %d', &a); printf('Execution finished...'); return 0; } 

Ve výše uvedeném programu scanf() čte dva vstupy z programu, i když předáváme jednu proměnnou, protože jsme zadali dva specifikátory formátu . Vždy pamatujte, In scanf()/printf() všechny specifikátory formátu které předáme, by mělo být stejné, jinak bychom mohli dostat nějaké neočekávané runtime chyby.

Příklad 3:

 int main() { int a, b; scanf('%d', &a, &b); printf('Execution finished...'); return 0; } 

Výstup:

 5 Execution finished... 

Vysvětlení:

Ve výše uvedeném programu scanf() čte pouze jeden vstup od uživatele, protože jsme zadali pouze jeden specifikátor formátu . Z tohoto příkladu tedy vyvozujeme, že žádný ze vstupů nebude brán v závislosti na počtu specifikátory formátu .

Příklad 4:

 #include int main() { int a; scanf('%d', a); printf('Execution finished'); } 

Výstup:

 6 Segmentation fault 

Vysvětlení:

Ve výše uvedeném programu předáváme hodnotu proměnné scanf() místo proměnné adresy. To povede k a chyba za běhu . V Linuxu dostaneme chybu segmentace.

jak stará je kylie jenner

Pří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ýstup:

 the value of a = 10, the value of b = 20 

Vysvětlení:

Ve výše uvedeném programu, kdy printf prohledá formátovací řetězec, nahradí jej specifikátory formátu (%d) se skutečnými hodnotami, ke kterým přecházíme printf() . tj. první specifikátor formátu bude nahrazen první hodnotou, kterou předáme printf(), a tak dále.

Základní rozdíly mezi Printf() a Scanf()

Několik rozdílů mezi printf a scanf je: -

    funkce printf(). odesílá data na standardní výstup, tedy do konzole. Na rozdíl od toho, funkce scanf(). čte data ze standardního vstupu, tedy vstupních zařízení printf() zřídka používá ukazatel v několika případech, ale scanf() vždy používá ukazatel k přiřazení hodnoty dané proměnné. printf() a scanf() oba mají stejný návratový typ celé číslo . The printf() vrátí počet znaků, které úspěšně vytiskl na konzole, zatímco scanf() se vrací 0,1 nebo EOF na základě poskytnutého specifikátoru formátu.