为了账号安全,请及时绑定邮箱和手机立即绑定

printf中的“%。* s”是什么意思?

printf中的“%。* s”是什么意思?

C
元芳怎么了 2019-11-26 15:33:27
我有一个代码片段,其中有一个printf("%.*s\n")什么%.*s意思
查看完整描述

3 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

这里更详细。


整数值或*指定最小字段宽度。如果需要,结果用空格字符填充(默认情况下),在右对齐时在左侧填充,在左对齐时在右侧填充。在使用*的情况下,宽度由int类型的附加参数指定。如果参数的值为负,则结果将指定为-标志,且字段宽度为正。(注意:这是最小宽度:该值永远不会被截断。)


.后跟整数或*,或者都不指定转换的精度。在使用*的情况下,精度由int类型的附加参数指定。如果此参数的值为负,则将其忽略。如果既不使用数字也不使用*,则精度为零。有关精度的确切影响,请参见下表。


因此,如果我们尝试两种转换规范


#include <stdio.h>


int main() {

    int precision = 8;

    int biggerPrecision = 16;

    const char *greetings = "Hello world";


    printf("|%.8s|\n", greetings);

    printf("|%.*s|\n", precision , greetings);

    printf("|%16s|\n", greetings);

    printf("|%*s|\n", biggerPrecision , greetings);


    return 0;

}

我们得到输出:


|Hello wo|

|Hello wo|

|     Hello world|

|     Hello world|


查看完整回答
反对 回复 2019-11-26
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

我不认为上面的代码是正确的,但(根据这个描述printf())的.*手段


宽度不是在格式字符串中指定的,而是作为必须格式


查看完整回答
反对 回复 2019-11-26
  • 3 回答
  • 0 关注
  • 1192 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信