logo

A printf() és a scanf() közötti különbség C-ben

Bevezetés:

Printf() és Scanf() beépített könyvtári funkciók C nyelvben, amelyek végrehajtják formázott bemenet és formázott kimenet funkciókat. Ezek a függvények a következőben vannak definiálva és deklarálva stdio.h fejlécfájlt . A 'f' ban ben printf és scanf jelentése 'formázott' . Tehát mindkét funkció printf() és scanf() használjon kódokat egy formátum karakterláncon belül a kimeneti vagy bemeneti értékek formátumának meghatározásához. A használathoz importálnunk kell a fejlécfájlt printf() és scanf() :

 #include 

Ebben a cikkben a printf() és a scanf() közötti különbségről fogunk beszélni, de mielőtt a különbségeket tárgyalnánk, ismernünk kell a printf() és scanf()-t szintaxisával és példáival együtt.

Printf():

Azt nyomatok bármi között dupla idézőjelek val vel formátum specifikációk %c, %d,%f, stb., változó vagy konstans értékének megjelenítéséhez, és tartalmazhatnak escape szekvencia karaktereket is, mint pl , számára új sor, és vízszintes fül , ill.

Hogyan találhatok meg rejtett alkalmazásokat androidon

Szintaxis:

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

Scanf():

Lehetővé teszi számunkra, hogy a felhasználó által a konzolon lévő billentyűzetről beírt egy vagy több értéket beolvassunk. Annyit elhelyezhetünk formátum-specifikációk annyi bemenetet, amennyit csak akarunk formátummal vagy anélkül.

Szintaxis:

 scanf(%format_specifier, &pointer_to_variable); 

Formátummeghatározó karakterlánc:

Az első paraméterben printf és scanf , átmegyünk formátum karakterlánc vagy formátummeghatározó karakterlánc , és megadjuk, hogy a felhasználó milyen típusú értéket fog megadni.

Adattípus Átalakítás formátum karakterlánc
Egész szám rövid egész szám %d vagy %i
rövid aláírás nélküli % ban ben
régen aláírva % ld
régen aláíratlan % lu
előjel nélküli hexadecimális % x
előjel nélküli nyolcas %O
Igazi úszó % f vagy % g
kettős %lf
aláírt karakter %c
előjel nélküli char %c
húr %s

Például ha egy felhasználó belép húsz bemenetként, mint húsz egy decimális egész érték , az összes decimális egész értéket megadjuk C-ben a segítségével %d formátummeghatározó . Hasonlóképpen, lebegő értékek használatával vannak megadva %f .

A Printf() és Scanf() alapkódja:

1. példa:

 #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; } 

Kimenet:

linux fájl szerkesztése
 Please enter the two values:8 6 The sum = 14 sub = 2 mul = 48 

Magyarázat:

A fenti programban a scanf() hogy beolvassa a bemenetet a konzolról és eltárolja azokat változókban a & b. Ezt követően számtani műveleteket hajtunk végre, mint pl kiegészítés , kivonás , és szorzás és később tárolja az eredményeket a három új változó (Sum, Sub, Mul). Végül a printf() függvény , kinyomtatjuk az eredményeket.

2. példa: -

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

A fenti programban scanf() két bemenetet olvas be a programból, bár egy változót adunk át, mert megadtuk két formátum-specifikáció . Mindig emlékezz, In scanf()/printf() mind a formátum-specifikációk amit átadunk, azonosnak kell lennie, különben váratlan futási hibákat kaphatunk.

3. példa:

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

Kimenet:

 5 Execution finished... 

Magyarázat:

A fenti programban scanf() csak egy bemenetet olvas be a felhasználótól, mert csak mi adtuk meg egy formátumspecifikátor . Ebből a példából tehát arra a következtetésre jutunk, hogy a bemenetek egyikét sem veszik figyelembe a számtól függően formátum-specifikációk .

4. példa:

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

Kimenet:

 6 Segmentation fault 

Magyarázat:

A fenti programban egy változó értékét adjuk át scanf() a változó cím helyett. Ez oda fog vezetni a Futtatási hiba . Linuxban szegmentációs hibaüzenetet fogunk kapni.

Android telefon beállítások menü

5. példa:

 #include int main() { int a = 10; int b = 20; printf('the value of a = %d, the value of b = %d', a, b); } 

Kimenet:

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

Magyarázat:

A fenti programban mikor printf beolvassa a formátum karakterláncot, lecseréli a formátum specifikációk (%d) a tényleges értékekkel, amelyekre áttérünk printf() . azaz az első formátumspecifikátor helyére az első átadott érték lép printf(), stb.

Alapvető különbségek a Printf() és a Scanf() között

Néhány különbség a printf és a scanf között:

    printf() függvény adatokat ad ki a szabványos kimenetre, azaz a konzolra. Ezzel szemben a scanf() függvény adatokat olvas be a szabványos bemenetről, azaz a beviteli eszközökről printf() ritkán használ mutatót néhány esetben, de scanf() mindig mutatót használ, hogy értéket rendeljen az adott változóhoz. printf() és scanf() mindkettőnek ugyanaz a visszatérési típusa egész szám . A printf() a konzolon sikeresen kinyomtatott karakterek számát adja vissza, míg scanf() visszatér 0,1 vagy EOF a megadott formátummeghatározó alapján.