查看:
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/