C %s格式化输出
写题时遇见的一个东西
1 | char* s = "hello world"; |
找到如下用法:
- *%ms:输出的字符串占 m 列,如字符串本身长度大于 m,则突破获 m 的限制,将字符串全部输出。若串长小于 m,则左补空格。
- *%-ms:如果串长小于 m,则在 m 列范围内,字符串向左靠,右补空格。
- *%m.ns:输出占 m 列,但只取字符串中左端 n 个字符。这 n 个字符输出在 m 列的右侧,左补空格,注意:如果 n 未指定,默认为 0.
- *%-m.ns:其中 m、n 含义同上,n 个字符输出在 m 列范围的左侧,右补空格。如果 n>m,则自动取 n 值,即保证 n 个字符正常输出,注意:如果 n 未指定,默认为 0.
如果是 sprintf(desc, “%m.ns”, sour);
- 如果 desc 空间够的话,会在%m.ns 串 的结尾自动补 null 字符,不同于 strncpy.例如 :sprintf(desc, “%.3s”, “123456”);
- desc 如果空间>=4 字节的话,第 4 个字节将是 null 字符。