logo

C'de snprintf () işlevi

Bu bölümde C programlama dilinde snprintf() fonksiyonunu tartışacağız. snprintf, standart printf() işlevinin çıktısını diğer arabelleklere yönlendiren, stdio.h başlık dosyasının önceden tanımlanmış bir kitaplık işlevidir.

snprint() işlevi, verilen dizeleri arabellek alanındaki bir dizi karakter veya değer halinde biçimlendirmek için kullanılır. snprintf() işlevi, arabellek alanında depolanan boş karakter de dahil olmak üzere maksimum karakter sayısını temsil eden bir 'n' bağımsız değişkeni içerir.

snprintf işlevi ayrıca ara belleğe eklenen veya ara belleğe yazılan karakter sayısını da döndürür. Ancak bu karakterler, print ifadesindeki printf() işlevi veya stdout başlık dosyasındaki karakterler tarafından döndürülür veya görüntülenir.

C'de snprintf () işlevi

Not: snprintf() işlevi, sonuçtaki çıktının sonuna arabellek boyutu olarak da sayılan bir boş karakter ekler. Ayrıca arabellek, dize türünde değil, yalnızca karakter türü öğelerini saklayan bir dizidir.

C'de snprintf() fonksiyonunun sözdizimi

Aşağıda c programlama dilinde snprintf() fonksiyonunun sözdizimi verilmiştir.

 int snprintf (char *str, size_t size, const char *format, ?); 

Parametreler:

cadde : Karakter tipinde bir dizi arabelleğidir.

boyut : arabellekte saklanabilecek maksimum karakter sayısını tanımlar.

biçim : C dilinde dize, printf() işlevinin stdio.h başlık dosyasında tanımladığıyla aynı türde belirtimleri içeren bir biçimi tanımlar.

…: İsteğe bağlı (…) bir parametre veya argümandır.

Dönüş Değerleri:

snprintf() işlevi, boş sonlandırıcı karakteri dahil etmeden, yeterince büyük bir arabellek için yazılan veya saklanan karakter veya değerlerin sayısını döndürür. Ve eğer yazılan karakterler arabellek boyutundan büyükse negatif bir değer döndürür. Ve arabellek boyutu çok küçükse, verilen dize kesilecek veya arabellek boyutuna küçültülecektir.

harita java'sı

Örnek 1: C'de snprintf() işlevini gösteren program

Arabellek boyutunu kontrol edecek ve C'deki snprintf() işlevini kullanarak arabelleğe girilen karakter sayısını döndürecek bir program oluşturalım.

 /* create an example to use the snprintf function in c. */ #include #include int main () { // declare and initialize the char variable char *r = 'Javatpoint.com'; char buf[100]; // define the size of character type buffer /* use the snprintf() function to return the no. of character founded in the buffer area */ int n = snprintf (buf, 34, '%s 
', r); // 34 represents the size of buffer to store max characters // display the string stored in the buffer and count each character of the buffer area. printf (' The given string is: %s 
 Count the stored character: %d 
', buf, n); return 0; } 

Yukarıdaki programı çalıştırdığımızda konsol ekranında verilen çıktıyı üretir.

 The given string is: Javatpoint.com Count the stored character: 16 

2veuygulamak

 The given string is: Javatpoint.com Count the stored character: -1 

Şimdi maksimum giriş karakterini 34'ten 14'e düşürüyoruz ve bu sefer negatif bir sayı döndürüyor, arabellek boyutunun verilen dizeden daha az olduğunu gösteriyor.

Örnek 2: C'de snprintf() işlevini kullanan program

C programlama dilinde snprintf() fonksiyonunu kullanarak karakteri ara belleğe ekleyip oradan geri dönmek için bir örnek oluşturalım.

Java adlandırma kuralları
 #include #include int main () { char buf[200]; // define the size of character type buffer int ret_val, buf_size = 55; char name[] = &apos;David&apos;; // define string int age = 19; // use the snprintf() function to return the no. of character found in buffer area ret_val = snprintf (buf, buf_size, &apos;Hello friend, My name is %s, and I am %d years old.&apos;, name, age); /* check ret_value should be greater than 0 and less than the size of the buffer (buf_size). */ if ( ret_val &gt; 0 &amp;&amp; ret_val <buf_size) { printf (' buffer is written successfully! 
 '); %s
', buf); no. of characters read: %d', ret_val); } else not completely filled or written. %s 
', the return value: 0; < pre> <p> <strong>When we execute the above program, it produces the given output on the console screen.</strong> </p> <pre> Buffer is written successfully! Hello friend, My name is David, and I am 19 years old. No. of characters read: 53 </pre> <p>In the above program, we declared the character type buffer buf[200], and the buf_size variable can insert the maximum characters is 55. If the given statement is in the defined range, the snprintf() function returns the total no. of characters read from the buffer. </p> <p> <strong>2<sup>nd</sup> execution</strong> </p> <pre> Buffer is not completely filled or written. Hello friend, My name is David and The return value: -1 </pre> <p>When we define the buf_size as 35, the given statement is automatically truncated by the snprintf() function that returns a negative number (-1) and displays &apos;Buffer is not completely filled or written&apos;.</p> <hr></buf_size)>

Yukarıdaki programda buffer buf[200] karakter tipini tanımladık ve buf_size değişkeni maksimum 55 karakter ekleyebilir. Verilen ifade tanımlanan aralıkta ise snprintf() fonksiyonu toplam sayıyı döndürür. arabellekten okunan karakterlerin sayısı.

2veuygulamak

 Buffer is not completely filled or written. Hello friend, My name is David and The return value: -1 

Buf_size değerini 35 olarak tanımladığımızda, verilen ifade snprintf() fonksiyonu tarafından otomatik olarak kesilerek negatif bir sayı (-1) döndürülür ve 'Buffer tam olarak doldurulmamış veya yazılmamış' mesajı görüntülenir.