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() 的可變參數版本。