formatting i o printf
Bu Eğitimde, C ++ 'da Girdi / Çıktı Biçimlendirmek için kullanılan printf, sprintf, scanf gibi İşlevlerin Kullanımı ve Örnekleri anlatılmaktadır:
Önceki C ++ eğitimlerimizde cin / cout kullanarak C ++ 'da Input-Output işlemlerini gerçekleştirebileceğimizi görmüştük.
Bu yapıları kullanmanın yanı sıra, C kütüphanesini de kullanabiliriz. C Standart Giriş ve Çıkış Kitaplığını (C dilindeki stdio.h başlığı için cstdio, C ++ eşdeğeri) kullanarak, klavyeler (standart giriş), yazıcılar, terminaller (standart çıkış ) veya işletim sistemi tarafından desteklenen diğer dosya türleri.
=> Derinlemesine C ++ Eğitim Öğreticilerine Buradan Bakabilirsiniz.
Akışlar, fiziksel cihazlarla tek tip bir şekilde etkileşime girmek için kullanılan soyut bir varlıktan başka bir şey değildir. Tüm akışlar benzer özelliklere sahiptir ve fiziksel medya cihazlarından bağımsızdır.
Bu eğitimdeki sonraki konularımızda, birkaç işlev, yani printf, sprint ve scanf hakkında ayrıntılı olarak bilgi edineceğiz.
Ne öğreneceksin:
- C ++ printf
- C ++ sprintf
- C ++ scanf
- scanf / printf Vs. cin / cout C ++ olarak
- Sıkça Sorulan Sorular
- Sonuç
C ++ printf
C ++ 'daki printf işlevi, standart çıktıya biçimlendirilmiş çıktıyı yazmak için kullanılır.
İşlev Prototipi:
int printf (const karakter * biçimi,…);
Parametreler:
format => Dosya akışına yazılan boş sonlu dizgeye bir işaretçi. % İle başlayan isteğe bağlı bir biçim belirleyicinin yanı sıra karakterlerden oluşur. Biçim belirticisi, biçim dizesini izleyen uygun değerlerle değiştirilir.
… => Biçimin belirtildiği sırada yazdırılacak verileri belirten diğer ek argümanlar.
Geri dönüş değeri:
Windows 10 için en iyi ücretsiz bilgisayar temizleme yazılımı
Başarı => printf, döndürülen karakter sayısını döndürür.
Başarısızlık => Olumsuz değer
Açıklama:
Printf işlevi başlıkta tanımlanmıştır. Printf işlevleri 'biçim' göstericisi tarafından gösterilen dizgeyi standart çıktı stdout'a yazar. Biçim dizgisi, daha sonra ek bağımsız değişkenler olarak printf işlevine iletilen değişkenlerle değiştirilen biçim belirleyicileri içerebilir (biçim dizesinden sonra).
Printf () İşlevinde Kullanılan Biçim Belirteci
Genel bir biçim belirleyici biçimi
%(flags)(width)(.precision)(length)specifier
Aşağıda, biçim belirleyicinin her bir parçasının açıklaması verilmiştir:
- % işaret: Bu önde gelen bir% işaretidir
- Bayraklar: Aşağıdaki değerlere sahip olabilirler:
- -: Alandaki sonucu sola yaslar. Varsayılan olarak, sağa yaslanmış.
- +: Pozitif sonuçlar dahil olmak üzere değerin başına eklenen sonucun işareti.
- Boşluk: Bir işaretin yokluğunda, sonucun başına boşluk eklenir.
- #: Alternatif bir dönüştürme biçimi belirtin.
- 0: Tam sayı ve kayan nokta sayıları için kullanılır. Boşluk olmadığında baştaki sıfırlar gibi davranın.
- Genişlik: * Veya tamsayı değeri biçiminde minimum alan genişliğini belirtir. Bu isteğe bağlıdır.
- Hassas: Hassasiyeti bir '.' Ve ardından bir * veya bir tamsayı veya hiçbir şey ile belirtir. Bu da isteğe bağlıdır.
- Uzunluk: Bağımsız değişkenin boyutunu belirten isteğe bağlı bağımsız değişken.
- Tanımlayıcı: Bu bir dönüştürme biçimi belirleyicisidir.
C ++ 'da kullanılan çeşitli Biçim Tanımlayıcıları aşağıdaki gibidir:
Yapma | Tanımlayıcı | Açıklama |
---|---|---|
7 | sen | İşaretsiz tamsayıyı ondalık gösterime dönüştürür. |
1 | % | Bir% yazdırır. |
iki | c | Tek karakter yazdırır. |
3 | s | Bir dize yazdırır. |
4 | g / i | İşaretli tamsayıyı ondalık gösterime dönüştürür. |
5 | veya | İşaretsiz tamsayıyı sekizlik gösterime dönüştürür. |
6 | x / X | İşaretsiz tamsayıyı onaltılık gösterime dönüştürür. |
8 | f / F | Kayan nokta sayısını ondalık gösterime dönüştürür. |
9 | ve / E | Kayan nokta sayısını ondalık üslü gösterime dönüştürür. |
10 | a / A | Kayan noktalı sayıyı onaltılık üsse dönüştürür. |
on bir | İyi oyun | Kayan nokta sayısını ondalık veya ondalık üslü gösterime dönüştürür. |
12 | n | Bu işlev çağrısı tarafından şimdiye kadar yazılan karakter sayısı. |
13 | p | Uygulama tanımlı karakter dizisine işaret eden bir işaretçi. |
Aşağıda, yukarıda tartışılan printf işlevini gösteren eksiksiz bir C ++ programlama örneği verilmiştir.
C ++ printf Örneği
#include //C++ printf example int main() { char ch = 'A'; float a = 8.0, b = 3.0; double d = 3.142; int x = 20; printf('float division : %.3f / %.3f = %.3f
', a,b,a/b); printf('Double value: %.4f
', d); printf('Setting width %*c
',4,ch); printf('Octal equivalent of %d is %o
',x,x); printf('Hex equivalent of %d is %x
',x,x); return 0; }
Çıktı:
Yukarıdaki program, printf işlevi için çeşitli çağrılar kullanır ve her printf çağrısının yukarıda tartıştığımız çeşitli biçim belirteçlerini kullandığını not ederiz. % .3f biçim belirleyicisi, en fazla 3 ondalık basamağa sahip bir kayan değer belirtir. Printf çağrılarının geri kalanı karakter, ondalık, sekizlik ve onaltılık değerleri görüntüler.
C ++ sprintf
C ++ 'daki Sprintf işlevi, bir fark dışında printf işlevine benzer. Çıktıyı standart çıktı standart çıktıya yazmak yerine, sprintf çıktıyı bir karakter dizisi arabelleğine yazar.
İşlev Prototipi:
int sprintf (char * buffer, const char * format,…)
Parametreler:
tampon => Sonucun yazılacağı dizge tamponunun işaretçisi.
Biçim => Dosya akışına yazılan boş sonlu bir dizeye işaretçi.
Not: sprintf işlevinde kullanılan biçim dizesi, printf işlevi açıklamasının bir parçası olarak tartışılanla aynıdır.
… => Biçimin belirtildiği sırada yazdırılacak verileri belirten diğer ek argümanlar.
Geri dönüş değeri:
başarı => Sonlandırıcı boş karakter hariç, yeterince büyük arabelleğe yazılan karakter sayısını döndürür.
Başarısızlık => Negatif değer döndürülür.
Açıklama:
Sprintf işlevi başlıkta tanımlanmıştır. Sprintf işlevi, dizge tamponuna biçim tarafından işaret edilen bir dizge yazmak için kullanılır. Dize biçimi,% ile başlayan ve sprintf () işlevine ek bağımsız değişkenler olarak iletilen değişkenlerin değerleri ile değiştirilen biçim belirteçleri içerebilir.
Sprintf işlevinin kullanımını gösteren örnek bir C ++ programı görelim.
sprintf Örneği
#include #include using namespace std; int main() { char mybuf(100); int retVal; char name() = 'Software Testing Help'; char topic() = 'C++ tutorials'; retVal = sprintf(mybuf, 'Hi, this is %s and you are reading %s !!', name, topic); cout << mybuf << endl; cout << 'Number of characters written = ' << retVal << endl; return 0; }
Çıktı:
Yukarıdaki örnekte, ilk olarak, sprintf işlevini kullanarak karakter tamponu mybuf'a biçimlendirilmiş bir dizge yazarız. Ardından cout kullanarak dizgeyi stdout'a görüntüleriz. Son olarak, mybuf arabelleğine yazılan karakterlerin sayısını görüntüleriz.
C ++ scanf
C ++ 'daki scanf işlevi, giriş verilerini standart giriş stdin'den okur.
İşlev Prototipi:
int scanf (sabit karakter * biçimi,…)
Parametreler:
format => Girişin nasıl okunacağını tanımlayan boş sonlu bir dizeye işaretçi. Bu biçim dizesi, biçim belirticilerinden oluşur.
… => Veri girişi alan ek argümanlar. Bu ek bağımsız değişkenler, biçim belirleyicisine göre sıralıdır.
Geri dönüş değeri:
başarı => Okunan bir dizi karakteri döndürür.
matchFailure => İlk alma bağımsız değişkeni atanmadan önce eşleşme hatası oluşursa sıfır döndürür.
Giriş Hatası => İlk alma bağımsız değişkeni atanmadan önce bir giriş hatası oluşursa EOF döndürür.
Açıklama:
Scanf () işlevi başlıkta tanımlanmıştır. Bu fonksiyon, verileri stdin'den okur ve sağlanan değişkenlerde depolar.
Scanf () İşlevinde Kullanılan Biçim Belirteci
Scanf () işlev biçimi dizesinin genel biçimi şöyledir:
%(*)(width)(length)specifier
Dolayısıyla, biçim belirticisi aşağıdaki bölümlerden oluşur:
- Boşluk olmayan karakter: Bunlar, giriş akışından bir özdeş karakter kullanan% dışındaki karakterlerdir.
- Boşluk karakteri: Tüm ardışık beyaz boşluk karakterleri tek bir boşluk karakteri olarak kabul edilir. Aynısı kaçış dizileri için de geçerli.
- Dönüşüm özelliği: Aşağıdaki biçime sahiptir:
- %: Başlangıcı belirten karakter.
- *: Atama bastırma karakteri çağırdı. Varsa, scanf sonucu herhangi bir alıcı parametreye atamaz. Bu parametre isteğe bağlıdır.
- Alan genişliği: Maksimum alan genişliğini belirten isteğe bağlı parametre (pozitif bir tam sayı).
- Uzunluk: Bir bağımsız değişken almanın boyutunu belirtir.
Dönüştürme Biçimi Belirticisi aşağıdaki gibi olabilir:
Yapma | Biçim belirleyici | Açıklama |
---|---|---|
7 | x / X | İşaretsiz onaltılık tamsayı ile eşleşir. |
1 | % | % İle eşleşir. |
iki | c | Tek karakterle veya genişliğe kadar birden çok karakterle eşleşir. |
3 | s | Belirtilen genişliğe veya ilk boşluğa kadar boşluk olmayan karakter dizisiyle eşleşir. |
4 | d | Ondalık ile eşleşir. |
5 | ben | Tamsayı ile eşleşir. |
6 | veya | İşaretsiz sekizlik tamsayı ile eşleşir. |
8 | sen | İşaretsiz ondalık tamsayı ile eşleşir. |
9 | a / A, e / E, f / F, g / G | Kayan noktalı sayıyla eşleşir. |
10 | (Ayarlamak) | Verilen kümedeki boş olmayan karakter dizisiyle eşleşir. Başında ^ işareti varsa, kümede olmayan karakterler eşleştirilir. |
12 | n | Şimdiye kadar okunan karakter sayısını döndürür. |
13 | p | Spesifik karakter dizisini uygulamaya yönelik işaretçi. |
Daha sonra, C ++ 'da scanf işlevinin kullanımını göstermek için örnek bir program uygulayacağız.
scanf Örneği
#include int main () { char str (80), pos_str(80); int i; printf ('Enter your company name: '); scanf ('%79s',str); printf ('Enter your position: '); scanf ('%s',pos_str); printf ('You work at %s as %s.
',str,pos_str); printf ('Enter a hexadecimal number: '); scanf ('%x',&i); printf ('You have entered %#x (%d).
',i,i); return 0; }
Çıktı:
Yukarıdaki programda, iki giriş dizisi ve bir onaltılık sayı okuyoruz. Sonra iki dizgiyi birleştirip sonuç dizgesini görüntülüyoruz. Sayı ondalık sayıya dönüştürülür ve görüntülenir.
scanf / printf Vs. cin / cout C ++ olarak
scanf / printf | cin / maliyet |
---|---|
C dilinde standart giriş-çıkış. | C ++ dilinde standart giriş-çıkış. |
'Stdio.h' içinde tanımlanmıştır. | 'İostream'de tanımlanmıştır. |
scanf ve printf, G / Ç için kullanılan bir işlevdir. | cin ve cout akım nesneleridir. |
Biçim dizesi, girdi ve çıktıyı biçimlendirmek için kullanılır. | Operatörler >> ve<< are overloaded and used along with cin and cout respectively. Biçim dizesi kullanılmaz. |
Yer tutucuyu kullanarak veri türünü belirleriz. | Veri türünü belirtmenize gerek yoktur. |
Sıkça Sorulan Sorular
S # 1) printf'i C ++ 'da kullanabilir misiniz?
Cevap: Evet. Printf, C ++ 'da kullanılabilir. Bu işlevi bir C ++ programında kullanmak için, programa başlığı eklememiz gerekir.
S # 2) Hangi dil printf kullanıyor?
Cevap: Printf, C dilinde standart çıktı işlevidir. Ayrıca C ++ programına başlık dahil edilerek C ++ dilinde de kullanılabilir.
S # 3) C programlamada% d nedir?
Cevap: printf işlevindeki% d değeri bir tamsayı değerini ifade eder.
S # 4) Scanf'de neden & kullanılıyor?
Cevap: & operatörü, hafıza konumuna erişmek için kullanılır. Değişkene açık bir şekilde geçmek yerine bir göstericiye geçmek kısaltmadır.
S # 5) printf () ve sprintf () arasındaki fark nedir?
Cevap: Bir fark dışında hem printf () hem de sprintf () işlevi aynıdır. Printf () çıktıyı stdout'a (standart çıktı) yazarken, sprintf çıktıyı bir karakter dizisi arabelleğine yazar.
S # 6) Sprintf null sona eriyor mu?
Cevap: sprintf, boş sonlandırma karakteri hariç, karakter dizisi dizisinde saklanan karakter sayısını döndürür.
S # 7) sprintf neden güvensiz?
Cevap: Sprintf işlevi, hedef arabelleğin uzunluğunu kontrol etmez. Bu nedenle, biçim dizgisinin uzunluğu çok uzun olduğunda, işlev hedef arabelleğin taşmasına neden olabilir. Bu, uygulama istikrarsızlığına ve güvenlik sorunlarına yol açarak sprintf işlevini güvensiz hale getirebilir.
Sonuç
Bu eğitimde, C başlığının eşdeğeri olan başlığı dahil ederek C ++ 'da kullanılabilen C kitaplığı girdi-çıktı işlevlerini - printf, sprintf ve scanf öğrendik.
Daha önce tartışıldığı gibi, kullanım biçim belirleyicileri ve yer tutuculardaki girdi-çıktı işlevleri ve verilerin okunduğu veya yazıldığı değişkenlerin veri türlerini belirtmemiz gerekir.
Bunun aksine, C ++ - cin ve cout'ta kullanılan akış nesneleri herhangi bir biçim belirleyicisi veya yer tutucusu kullanmaz. Aşırı yüklenmiş >> kullanıyorlar ve<< operators to read in and write the data.
=> Mükemmel C ++ Eğitim Kılavuzuna Buradan Bakabilirsiniz.
Önerilen Kaynaklar
- Python Dizesi İşlevleri
- VBScript Tarih İşlevleri: Tarih Biçimi, DateAdd ve cDate İşlevleri
- JMeter Değişkenleri ve Fonksiyonları
- Python İşlevleri
- C ++ 'da Kitaplık İşlevleri
- Parametreli ve Dönüşlü Unix Shell Komut Dosyası İşlevleri
- Örneklerle C ++ 'da Tarih ve Saat İşlevleri
- C ++ 'da Arkadaş İşlevleri