Manpages

名 前

asprintf, vasprintf − 文 字 列 を 割 り 当 て て そ れ に 出 力 す る

書 式

#define _GNU_SOURCE /* feature_test_macros(7) 参 照 */
#include <stdio.h>

int asprintf(char **strp, const char *fmt, ...);

int vasprintf(char **strp, const char *fmt, va_list ap);

説 明

asprintf() 関 数 と vasprintf() 関 数 と は 、 そ れ ぞ れ sprintf(3) 関 数 と vsprintf(3) 関 数 と に 似 て い る が 、 出 力 文 字 列 を (終 端 の ヌ ル バ イ ト ('\0') も 含 め て ) 保 持 す る の に 十 分 な 大 き さ の メ モ リ ー を 確 保 し 、 最 初 の 引 数 に そ の 文 字 列 へ の ポ イ ン タ ー を 返 す 。 こ の ポ イ ン タ ー は 、 不 要 に な っ た ら free(3) に 渡 し 、 割 り 当 て ら れ た 記 憶 領 域 を 解 放 す べ き で あ る 。

返 り 値

成 功 す る と 、 こ れ ら の 関 数 は 出 力 さ れ た バ イ ト 数 を (sprintf(3) の よ う に ) 返 す 。 メ モ リ ー の 割 り 当 て が で き な か っ た り 、 そ の 他 エ ラ ー が 生 じ る と 、 こ れ ら の 関 数 は −1 を 返 し 、 strp の 内 容 は 未 定 義 と な る 。

準 拠

こ れ ら の 関 数 は GNU の 拡 張 で あ り 、 C や POSIX の も の で は な い 。 こ れ ら は *BSD で も 利 用 で き る 。 FreeBSD の 実 装 で は 、 エ ラ ー の 際 に は strp を NULL に セ ッ ト す る 。

関 連 項 目

free(3), malloc(3), printf(3)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。