通信用語の基礎知識 全国のICカードこれひとつ 戻る

通常PC用 / 人気 更新 今日 カテ
電子計算機 > 仕様・構造 > ソフトウェア > プログラミング言語 > 言語仕様 > 予約語・関数など > C
snprintf
辞書:電算用語の基礎知識 プログラミング仕様編 (PTPROGS)
読み:エス-エン-プリント-エフ
外語:snprintf
品詞:名詞

Cで、文字列書式に従って、「指定文字数分だけ」文字配列に書き込む関数。sprintfのセキュリティ向上版。

目次
書式

#include <stdio.h>

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

概要

sprintfと比較して、snprintfでは第2引数として第1引数のサイズを記載するためのパラメーターが追加されている。

第2引数のsize_t sizeは、終端NULLバイト('\0')も含めたサイズを指定する。

第3引数に指定するフォーマット文字列は、sprintfprintfと同じである。

この関数は、最大で第2引数-1文字だけ第1引数のバッファーに書き込み、第1引数の末端(size番目)には終端文字 '\0' を書き込んで返却する。

これにより、sprintfと同じ機能を、決してバッファーオーバーフローを起こすことなく実現することができる。

特徴

sprintfは、strcpy、strcatと共に、頻繁にバッファーオーバーフローを起こす、代表的な三大文字列関数の一つだった。

なぜなら、結果を格納する先の大きさを指定できないからである。

そこで現在は、第2引数に第1引数の大きさを記載する機能を追加したsnprintf関数が提供され、C99以降で標準化されている。

特段の理由がないのであれば、sprintfではなく、snprintfを用いるべきである。

リンク
用語の所属
C
関連する用語
printf
sprintf
バッファーオーバーフロー

[再検索] [戻る]


通信用語の基礎知識検索システム WDIC Explorer Ver 7.04 (07-Mar-2021)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club
KisoDic