Small. Fast. Reliable.
Choose any three.

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()的varargs版本。

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

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