SQlite源码分析

*sqlite3_vsnprintf()函数

char *sqlite3_vsnprintf(int n, char *zBuf, const char *zFormat, va_list ap){
  StrAccum acc;
  if( n<=0 ) return zBuf;
  sqlite3StrAccumInit(&acc, zBuf, n, 0);
  acc.useMalloc = 0;
  sqlite3VXPrintf(&acc, 0, zFormat, ap);
  return sqlite3StrAccumFinish(&acc);
}
char *sqlite3_snprintf(int n, char *zBuf, const char *zFormat, ...){
  char *z;
  va_list ap;
  va_start(ap,zFormat);
  z = sqlite3_vsnprintf(n, zBuf, zFormat, ap);
  va_end(ap);
  return z;
}
功能:sqlite3_snprintf()的作用像函数snprintf(),不同之处在于它忽略了当前区域设置。这是SQLite的重要,因为我们无法在通过一些特定的语言环境中使用“,”作为在这里的小数点。
注意:sqlite3_snprintf()的前两个参数是参照snprintf()的标准。不幸的是,在不破坏兼容性时,它是不会改变什么的,所以我们这种错误时无关紧要的。
sqlite3_vsnprintf()是可变参数版本。
函数引用: