SQLite C 接口

格式化字符串打印函数

char *sqlite3_mprintf(const char*,...);
char *sqlite3_vmprintf(const char*, va_list);
char *sqlite3_snprintf(int,char*,const char*, ...);
char *sqlite3_vsnprintf(int,char*,const char*, va_list);

这些例程与标准 C 库中的“printf()”函数族类似。这些例程理解标准库 printf() 中的大多数常见格式化选项以及一些额外的非标准格式(%q%Q%w%z)。有关详细信息,请参阅内置的 printf()文档。

sqlite3_mprintf() 和 sqlite3_vmprintf() 例程将它们的结果写入从sqlite3_malloc64()获得的内存中。这两个例程返回的字符串应该由sqlite3_free()释放。如果sqlite3_malloc64()无法分配足够的内存来保存结果字符串,这两个例程都会返回 NULL 指针。

sqlite3_snprintf() 例程类似于标准 C 库中的“snprintf()”。结果写入作为第二个参数提供的缓冲区,其大小由第一个参数指定。请注意,前两个参数的顺序与 snprintf() 相反。这是一个历史事故,如果不破坏向后兼容性就无法修复。另请注意,sqlite3_snprintf() 返回指向其缓冲区的指针,而不是实际写入缓冲区的字符数。我们承认写入的字符数将是一个更有用的返回值,但我们现在不能在不破坏兼容性的情况下更改 sqlite3_snprintf() 的实现。

只要缓冲区大小大于零,sqlite3_snprintf() 就保证缓冲区始终以零终止。第一个参数“n”是缓冲区的总大小,包括零终止符的空间。所以能完整写出的最长字符串将是n-1个字符。

sqlite3_vsnprintf() 例程是 sqlite3_snprintf() 的可变参数版本。

另请参阅: 内置 printf()printf() SQL 函数

另请参阅 对象常量函数的列表。