printf 字串輸出固定長度

來源:互聯網
上載者:User

#include <stdio.h>

void main()
{
   char str[20] = "abcdefg";
    double n = 10.1234567;
 printf("%.3s /n", str);
 printf("%.3f /n", n);
}

 

輸出:abc
          10.123

下面對printf中的%.M輸出做一下簡單的分析,在printf的定義中,回解析所有的字元有自己的協議棧來分析format的參數,其中,

/* 一下內容來自output.c-------------------------------------------------------

 while ((ch = *format++) != _T('/0') && charsout >= 0) {
        chclass = find_char_class(ch);  /* find character class */
        state = find_next_state(chclass, state); /* find next state */
      /* execute code for each state */
        switch (state) {
......
                case ST_DOT:
            /* zero the precision, since dot with no number means 0
               not default, according to ANSI */
            precision = 0;
            break;

--------------------------------------------------------------*/

就如代碼中所說的,如果小數點後面不是數字,則按照ANSI標準來格式化後面的輸出,來比較輸出的長度

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.