sprintf | Programming Place Plus C言語編 標準ライブラリのリファレンス

トップページC言語編標準ライブラリのリファレンス(名前順)

トップページC言語編標準ライブラリのリファレンス(ヘッダ別)


sprintf関数

概要

文字の配列へ、変換指定に沿って変換された文字列を出力する。

ヘッダ

stdio.h

形式

int sprintf(char* restrict s, const char* restrict format, …);

引数

s

結果を格納する配列を指すポインタ。

format

変換指定を含んだ、あるいは含まないプレーンな文字列。

format に含まれている変換指定子に対応した個数のパラメータ。

戻り値

正常に終了した場合は、出力した文字数が返される(末尾のヌル文字は含まない)。エラー発生時は負数が返される。

詳細

結果を配列へ格納することを除き、printf関数と同様であり、同じ機能を持つ。
文字列s の末尾には、自動的に ‘\0’ が付加される。

注意

必要な個数の実引数が指定されていない場合の動作は未定義。余分に指定されている場合には、評価は行われるが、sprintf関数としては無視する。

結果を配列へ格納するため、printf関数と異なり、バッファオーバーフローの可能性を配慮しなければならない。変換指定子を複数使うケースでは、丁寧に最大文字数を考える必要があり、安全に使うことは難しい。

使用例

#include <stdio.h>

int main(void)
{
    char str[20];

    sprintf(str, "%d %3d %03d", 10, 10, 10);
    puts(str);
}

実行結果:

10  10 010

関連

標準出力へ同様の変換指定を行い出力するには、printf関数を使う。任意のストリームに対して出力するには、fprintf関数を使う。
引数に … ではなく、va_list を用いたバージョンとして、vsprintf関数がある。
ワイド文字版の swprintf関数がある。
文字数の上限を指定できるようになり、安全性が高まった snprintf関数がある。

解説章


参考リンク


更新履歴

’2018/4/22 解説中で C95 を(C89 に対して)特別扱いしないように修正。そもそもC言語編は C95ベースなので、余計な説明は省く。

’2018/4/15 全体的に文章を見直し修正。

’2018/4/8 「戻り値」の内容を修正。

’2018/2/1 C言語編全体で表記を統一するため、「フォーマット指定」を「変換指定」に改めた。

’2018/1/22 新規作成。



標準ライブラリのリファレンス(名前順)のトップページへ

標準ライブラリのリファレンス(ヘッダ別)のトップページへ

C言語編のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
X で ポストフォロー LINE で送る noteで書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る