sil*_*ker 4 c string printf format-specifiers
请解释输出.是什么%.#s在printf()意思?
#include<stdio.h>
#include <stdlib.h>
int main(int argc,char*argv[]){
char *A="HELLO";
printf("%.#s %.2s\n",A,A);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
#s HE
Run Code Online (Sandbox Code Playgroud)
这是未定义的行为.#在printf格式说明装置的替代形式,但是根据标准,#仅与一起使用o,a,A,x,X,e,E,f,F,g,G,不包括s.
C11§7.21.6.1 的
fprintf功能第6节
#结果转换为"替代形式".对于o转换,它会增加精度,当且仅在必要时,强制结果的第一个数字为零(如果值和精度都是0,0则打印单个数字).对于x(或X)转换,非零结果具有0x(或0X)前缀.对于a,A,e,E,f,F,g,和G转换,转换浮点数的结果总是包含一个小数点字符,即使没有数字跟随它.(通常情况下,小数点字符出现在仅当一个数字如下它这些转换的结果).对于g和G转换,尾随零不会从结果中移除.对于其他转换,行为未定义.
例如,在我的机器上,输出是不同的: %.0#s HE