snprintf() — フォーマット設定データのバッファーへの出力

フォーマット

#include <stdio.h>
int snprintf(char *buffer, size_t n, const char *format-string,
             argument-list);

言語レベル

ANSI

スレッド・セーフ

はい

ロケール依存

この関数の振る舞いは、現行ロケールの LC_CTYPE カテゴリーおよび LC_NUMERIC カテゴリーの影響を受ける可能性があります。また、この振る舞いは、LOCALETYPE(*LOCALEUCS2) または LOCALETYPE(*LOCALEUTF) がコンパイル・コマンドに対して指定されている場合は、現行ロケールの LC_UNI_CTYPE カテゴリーの影響を受ける可能性もあります。詳細については、CCSID およびロケールの理解を参照してください。

説明

snprintf() 関数は、一連の文字と値をフォーマット設定し、配列 buffer に保管します。 すべての argument-list は、format-string の対応する形式指定に従って変換され、出力されます。snprintf() 関数は、 sprintf() 関数に n 引数を加えたものと同じです。 この引数は、buffer に書き込まれる最大文字数 (終了ヌル文字を含む) を示します。

format-string は、通常の文字で構成され、 printf() 関数の書式ストリングと同じ形式と機能を持っています。

戻り値

snprintf() 関数は、配列に書き込まれるバイト数 (終了ヌル文字はカウントされません) を戻します。

この例では、snprintf() を使用して、さまざまなデータをフォーマット設定し、出力します。

#include <stdio.h>

char buffer[200];
int i, j;
double fp;
char *s = "baltimore";
char c;

int main(void)
{
   c = 'l';
   i = 35;
   fp = 1.7320508;

   /* Format and print various data */
   j = snprintf(buffer, 6, "%s¥n", s);
   j += snprintf(buffer+j, 6, "%c¥n", c);
   j += snprintf(buffer+j, 6, "%d¥n", i);
   j += snprintf(buffer+j, 6, "%f¥n", fp);
   printf("string:¥n%s¥ncharacter count = %d¥n", buffer, j);
}

/*********************  Output should be similar to:  *************

string:
baltil
35
1.732
character count = 15           */