c++ - 我可以在字符串的 sprintf 中使用 sizeof() 或 #define 来提高精度吗?

标签 c++ c

查看:
http://www.cplusplus.com/reference/clibrary/cstdio/sprintf/

用于字符串 (%.Ns) 精度。

当我在精度中使用 sizeof 或 #define 长度时,它会将其读取为实际文本。

这是为什么?这是什么规则?是否只能是整数值?

即-

buffer[50];

sprintf (buffer, "%.sizeof(buffer)s", string);  

#define MAX_LEN

sprintf (buffer, "%.MAX_LENs", string);  

谢谢

最佳答案

引号内的任何内容都是字符串的一部分,编译器根本不会考虑去碰它。相反,您可以使用“*”让 sprintf 知道您的精度是它可以读取的额外参数。另外,你需要'。'在你的精度之前,否则它将是一个 pad-width。

sprintf(buffer, "%.*s", (int) sizeof(buffer), string);

关于c++ - 我可以在字符串的 sprintf 中使用 sizeof() 或 #define 来提高精度吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3835021/

相关文章:

c++ - 在单字符行上调用时由 CRichEditCtrl::GetLine() 添加的虚假 '\r'?

c++ - 三元运算符 vs if 语句 : compiler optimization

c++ - 线程共享资源C++

c++ - 使用 opengl 从 .obj 文件加载立方体时无法绘制正确的立方体

ios - 如何将c程序转换为完全可移植的ios

C:无法理解该程序中的指针

c++ - 访问冲突。 C++ 多态性

c - 程序因调用 execvp 编译错误的程序而崩溃?

使用 strtok() 后的条件

c - 缓冲区溢出 - 用金丝雀防御未成功