logo

C'de printf() ve scanf() arasındaki fark

Giriiş:

Printf() Ve Tarama() C dilinde aşağıdaki işlemleri gerçekleştiren yerleşik kütüphane işlevleridir: biçimlendirilmiş giriş Ve biçimlendirilmiş çıktı işlevler. Bu işlevler şurada tanımlanır ve bildirilir: stdio.h başlık dosyası . 'F' içinde baskı Ve tarama anlamına gelir 'biçimlendirilmiş' . Yani her iki fonksiyon printf() Ve tarama() Çıkış veya giriş değerlerinin nasıl formatlanması gerektiğini belirtmek için format dizesi içindeki kodları kullanın. Kullanmak için başlık dosyasını içe aktarmamız gerekiyor printf() Ve tarama() :

 #include 

Bu yazıda printf() ve scanf() arasındaki farklardan bahsedeceğiz, ancak farkları tartışmadan önce printf() ve scanf() hakkında söz dizimi ve örnekleriyle bilgi sahibi olmalıyız.

Printf():

BT baskılar aradaki herhangi bir şey ikili alıntı ile biçim belirticileri %c, %d,%f, vb., bir değişkenin veya sabitin değerini göstermek için kullanılır ve aynı zamanda aşağıdaki gibi kaçış dizisi karakterlerine de sahip olabilir: , için Yeni hat, Ve yatay sekme , sırasıyla.

c kodu dize dizisi

Sözdizimi:

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

Tarama():

Kullanıcının girdiği bir veya birden fazla değeri konsolda klavye aracılığıyla okumamızı sağlar. İstediğimiz kadar yerleştirebiliriz biçim belirticileri formatlı veya formatsız istediğimiz kadar giriş.

Sözdizimi:

 scanf(%format_specifier, &pointer_to_variable); 

Biçim Belirleyici dizesi:

İlk parametrede baskı Ve tarama , geçiyoruz biçim dizesi veya biçim belirleyici dizesi ve kullanıcının ne tür bir değer gireceğini belirtiyoruz.

Veri tipi Dönüştürmek biçim dizesi
Tamsayı kısa tamsayı %d veya %i
kısa imzasız % içinde
uzun imzalı % kimlik
uzun süredir imzasız % lu
imzasız onaltılı sayı % X
işaretsiz sekizli
Gerçek batmadan yüzmek %f veya %g
çift %lf
imzalı karakter %C
imzasız karakter %C
sicim %S

Örneğin, bir kullanıcı girerse yirmi giriş olarak yirmi bir ondalık tam sayı değeri , C'deki tüm ondalık tam sayı değerlerini şunu kullanarak belirtiriz: %d biçim belirtici . Benzer şekilde, kayan değerler kullanılarak belirtilir %F .

Printf() ve Scanf() için Temel Kod:

Örnek 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; } 

Çıktı:

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

Açıklama:

Yukarıdaki programda kullandığımız tarama() girişi konsoldan okumak ve bunları değişkenlerde saklamak için a ve b. Daha sonra aşağıdaki gibi aritmetik işlemleri gerçekleştiriyoruz. ek , çıkarma , Ve çarpma işlemi ve daha sonra sonuçları üç yeni değişken (Toplam, Alt, Çar). Son olarak, kullanarak printf() işlevi , sonuçları yazdırıyoruz.

Örnek 2: -

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

Yukarıdaki programda, tarama() belirttiğimiz için bir değişkeni geçirmemize rağmen programdan iki girdi okur iki format belirleyici . Her zaman hatırla, içinde scanf()/printf() hepsi biçim belirticileri ilettiğimiz değerler aynı olmalıdır, aksi takdirde bazı beklenmedik çalışma zamanı hataları alabiliriz.

Örnek 3:

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

Çıktı:

 5 Execution finished... 

Açıklama:

dize jsonobject

Yukarıdaki programda, tarama() yalnızca belirttiğimiz için kullanıcıdan yalnızca bir girdi okur bir format belirtici . Dolayısıyla bu örnekten, girdi sayısına bağlı olarak hiçbir girdinin alınmayacağı sonucuna varıyoruz. biçim belirticileri .

Örnek 4:

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

Çıktı:

 6 Segmentation fault 

Açıklama:

Yukarıdaki programda bir değişkenin değerini aktarıyoruz. tarama() değişken adresi yerine. Bu bir yol açacak çalışma hatası . Linux'ta segmentasyon hatası hatası alacağız.

Java'da matematiksel yöntemler

Örnek 5:

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

Çıktı:

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

Açıklama:

Yukarıdaki programda, baskı biçim dizesini tarar, yerini alır biçim belirleyicileri (%d) aktardığımız gerçek değerlerle printf() . yani, ilk format belirticinin yerini, ilettiğimiz ilk değer alacaktır. printf(), ve benzeri.

Printf() ve Scanf() arasındaki Temel Farklılıklar

Printf ve scanf arasındaki birkaç fark şunlardır: -

    printf() işlevi verileri standart çıktıya, yani konsola çıkarır. Buna karşılık, scanf() işlevi standart girişten, yani giriş cihazlarından veri okur printf() işaretçiyi birkaç durumda nadiren kullanır ancak tarama() Verilen değişkene değer atamak için her zaman bir işaretçi kullanır. printf() Ve tarama() her ikisi de aynı dönüş türüne sahip tamsayı . printf() konsolda başarıyla yazdırdığı karakter sayısını döndürür, oysa tarama() İadeler 0,1 veya EOF sağlanan format belirleyiciye göre.