冲刺的内部工作
Internal working of sprintf
我像这样使用sprintf
sprintf(cTmpBuf, "%0*lu",targetPrecision,ulFraction);
在此之前,我像这样使用
sprintf(cTmpBuf, "%06lu", ulFraction);
现在我知道它选择了targetPrecision的值并将其设置为*,但我想知道它背后发生了内部事情
如果你想知道它是如何实现的,那就没有魔法了;它只是使用<stdarg.h>
处理的另一个参数。粗略地说,它会像这样:
prec = -1;
⋮
if (*cp == '*') {
prec = va_arg(ap, int);
cp++;
}
我不确定这是否回答了您的问题,但是使用*
进行字符串格式设置可以控制格式宽度。因此,在第一次调用中,格式宽度由 targetPrecision
的值决定。
在第二次调用中,格式宽度固定为 6 位。
至于sprintf
的实际内部结构,你可以参考@Marcelo康托斯的回答。
检查此link
以了解格式参数。
相关文章:
- C++代码停止工作错误使用cout内部函数
- std::strlen 在内部是如何工作的?
- 虚拟基类在内部如何工作?编译器如何解析对基方法的调用?
- 访问说明符(私有/公共/受保护)如何在内部工作(限制成员访问)?
- 指向C++中成员的指针如何在内部工作?
- 删除和删除[]在内部如何工作?
- C 功能如何内部工作
- 自动参数如何在内部工作
- C++放置位置删除如何在内部(C++运行时)工作?如何克服其局限性?
- 函数指针仅在 main 内部工作
- 不要在心理上理解这个内部循环是如何工作的
- 如果不允许我分配 rvalues 来引用为什么以下代码片段有效,这在内部如何工作?
- (c++)无法让 void 函数工作,主.cpp内部的几行也有问题
- 为什么SFINAE(enable_if)从类定义内部工作而不是从外部工作
- 如何将负数转换为更广泛的类型在内部工作
- c++运算符=工作异常(函数内部输出正常,但返回后错误)
- std::remove_const 如何在<T>内部工作
- 如何与CUDA中的结构内部结构一起工作
- C++:析构函数内部如何工作以及谁调用默认析构函数
- Sendmessage在方法定义内部无法正常工作