C++ の snprintf() とは

C No Snprintf Toha



C++ は、プログラマーにいくつかの利点を提供する、一般的に使用されるプログラミング言語です。多くの目的に利用できるさまざまな組み込み関数が含まれています。それらの機能の中に、と呼ばれる機能があります。 snprint() 、ほとんどの人は知りません。

この記事では、構文、パラメーター、戻り値、および動作について説明します snprintf() C++ の関数。完全な理解を見つけることができます snprintf() このガイドで。

C++ の snprintf() とは

C++ では、 snprintf() バッファに書き込まれる一連の文字および文字列値をフォーマットまたは格納するために使用される関数です。と同様に機能します sprintf() 機能しますが、バッファ オーバーフローを克服する機能があります。の ヘッダー ファイルには、 snprint() プログラムで関数を使用する場合は、宣言する必要があります。の snprintf() 関数は、バッファが保持できる最大コンテンツを指定します。







以下は、使用する構文です snprintf() C++ の関数:



snprintf ( チャー * バッファ、 size_t buf_size、 定数 チャー * フォーマット、 ... ) ;

文字が書き込まれると、終了ヌル文字が挿入されます。 MAX_BUFSIZE が 0 の場合、何も格納されず、バッファーはヌル ポインターとして機能する可能性があります。



snprintf() のパラメータ

以下は、で使用されるパラメーターです。 snprintf() 関数。





  • バッファ : 出力が書き込まれる文字列バッファーへのポインター。
  • buf_size : MAX_BUFSIZE-1 は、バッファに書き込める最大文字数です。
  • フォーマット : null で終わる文字列がファイル ストリームにポインタとして書き込まれました。これは、% で始まる文字と可能な書式指定子で構成されます。フォーマット文字列に続く変数の値は、フォーマット指定子を置き換えます。
  • (追加の引数) : フォーマット文字列のタイプに応じて、関数は追加の引数のリストを期待する場合があります。すべての引数には、文字列のフォーマットでフォーマット指定子を置き換えるために使用される値が含まれます (または、MAX_BUFSIZE の場合は、格納場所へのポインター)。 .

フォーマット指定子の値と同数以上のパラメータが必要です。関数は追加の引数を無視します。

snprintf() が返すもの

関数が成功すると、適切な大きさのバッファーに書き込まれたと見なされる文字数を返します。ただし、終端の null 文字は除きます。失敗すると、負の値が返されます。出力は、返された値が負ではなく、MAX_BUFSIZE より小さい場合にのみ、完全に書き込まれたと見なされます。



C++ で snprintf() を使用する方法

C++ で snprintf() を使用する例を次に示します。

#include
#include
使用して 名前空間 標準 ;
整数 主要 ( )
{
チャー buff_size [ 60 ] ;
整数 return_Value、MAX_BUFSIZE = 60 ;
チャー [ ] = 「リナックス」 ;
整数 記事 = 4.5 ;
return_Value = snprintf ( buff_size、MAX_BUFSIZE、 'こんにちは %s ユーザー、bash に関する %d 記事を読みましょう' ,str, 記事 ) ;
もしも ( return_Value > 0 && return_Value < MAX_BUFSIZE )
{
カウト << buff_size << エンドル ;
カウト << 「書いた文字数=」 << return_Value << エンドル ;
}
それ以外
カウト << 「バッファへの書き込みエラー」 << エンドル ;
戻る 0 ;
}

上記のコードでは、バッファの最大サイズを 60 に設定しています。これは、コードが 60 文字以下を受け入れることを意味します。 snprintf() 関数を使用して 56 文字の文字列を出力し、出力ターミナルに表示します。入力した文字数が 60 文字を超える場合、プログラムはエラーになります。

結論

C++ のプロトタイプ、パラメーター、戻り値、および動作を示しました。 snprintf() フォーマットされた文字列を文字列バッファに書き込む関数。を完全に理解した例を説明しました snprintf() このガイドで。