亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 1305 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號