我正在这样使用sprintf

sprintf(cTmpBuf, "%0*lu",targetPrecision,ulFraction);

在这之前我用的是这个
sprintf(cTmpBuf, "%06lu", ulFraction);

现在我知道了,选择targetPrecision的值并将其设置为*但是我想知道它背后发生的内部事情

最佳答案

如果你想知道它是如何实现的,那就没有魔法;它只是使用<stdarg.h>处理的另一个参数。很粗略地说,大概是:

prec = -1;
⋮
if (*cp == '*') {
  prec = va_arg(ap, int);
  cp++;
}

关于c++ - sprintf的内部工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10930685/

10-11 21:55