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

T.T*_*.T. 2 c c++

请查看: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)