请查看:http://www.cplusplus.com/reference/clibrary/cstdio/sprintf/
对于字符串(%.Ns)精度.
当我在precsion中使用sizeof或#define长度时,它将其作为实际文本读取.
为什么是这样?有什么规则?它只是一个整数值吗?
即 -
buffer[50];
sprintf (buffer, "%.sizeof(buffer)s", string);
Run Code Online (Sandbox Code Playgroud)
要么
#define MAX_LEN
sprintf (buffer, "%.MAX_LENs", string);
Run Code Online (Sandbox Code Playgroud)
谢谢
asc*_*ler 11
引号内的任何内容都是字符串的一部分,编译器甚至不会想到触摸它.相反,您可以使用'*'来sprintf了解您的精度是它可以读取的额外参数.另外,你需要'.' 在你的精度之前,否则它将是一个垫宽.
sprintf(buffer, "%.*s", (int) sizeof(buffer), string);
Run Code Online (Sandbox Code Playgroud)