Character Type Output format 返回值 sprintf(myString, "address [%0*d]\n",8, myFunc) 返回值是 strlen(myString) 或者说缓冲区实际长度. * (.*) all 这个字符用法为不定长的长度,例如%2d,%3d, %*n , %.*f , etc; printf( "address [%0*d]\n",8, myFunc) == printf( "address [%08d]\n", myFunc); % None %% 打印一个% 0, #, -, +,(space) 0,+, -, 为右对齐或者左对齐。例如 printf(“%-8d%8d”,1234,5677), 默认为右对齐(“+”), 0做补位填充使用 Space为空位,如果是space和”+”,没有其他,这些space将被忽略, # c int or int_t 单个字符,如果使用 wprintf 将是宽字符 C int or int_t 宽字符 如果使用 wprintf 将是单字符 s String 单字节字符串使用printf 如果使用 wprintf 就是宽字符串,如果空串,结果是"(null)" S String 宽字符串使用printf 如果使用 wprintf 就是单字节字符串,如果空串,结果是"(null)" w String,char 打印 char or string,宽字符打印,不喜欢用 W2A的用这个 sprintf(str,"%ws",L"abcde"); d,i,I64I32,I Int 十进制整形 I64d, i64d 打印64位整形 ui64d无符号64位整形, 末尾d不是必须,I 与平台相关。 l(小写L) ,ll Int 长整型 printf( "%ld", myFunc), ll 为(long,long) h Int 短整形,四字节截取成双字节。 L Double,float 打印成Long double 类型. 作用于 e,E,f,g,G o int 八进制无符号整形 u int 无符号整形 x int 无符号十六进制整形,小写 “abcdef” X int 无符号十六进制整形,大写 “ABCDEF” e double 3.9265e+2,幂形式的浮点数,小写e E double 3.9265E+2,幂形式的浮点数,大写E f double 打印单精度浮点数 g double 短的 %e 或者%f G double 短的 %E 或者%f a double 有符号,双精度浮点数指针地址 0Xh.hhhh p±dd A double 有符号,双精度浮点数指针地址 0Xh.hhhh P±dd n Pointer to integer 到目前为止缓冲区都有啥取之. printf( "12345%n6789\n", &i ); i就等于5啦 p Pointer to void 打印物理地址,相当于 printf( "%0*x", 2 * sizeof(void *), &i);

评论