那些讓人賞心悅目的C語言代碼,優雅永不過時!


賞心悅目的C語言輸出

C語言的輸出功能,超出你的想象,你能想到的,她基本也能做到。

剛開始還只是照抄printf語句,老是出現下面的情況:

Hello World% $

后面才曉得 printf 函數是有特殊規定字符的,比如換行的 \n,換頁的 \f,回車的 \r,以及制表符 \t 等。

這次就說說是個什么意思以及如何使用。

本節盡量只使用 printf 函數,除非 有必要,盡量簡潔,然后舉幾個用的最廣的例子。

 

換行顯示文本

printf要完成的功能就是顯示文本,比如最簡單的:

/*beginner/print/print1.c*/

#include <stdio.h>

int main()

{

    printf("Hello World\n");

    return 0;

}

比如我們想打印一首詩,原文是

Hickory, dickory, dock,

The mouse ran up the clock.

The clock struck one,

The mouse ran down,

Hickory, dickory, dock.

這個簡單呀,直接輸入下面的代碼

/*beginner/print/print2.c*/

#include <stdio.h>

int main()

{

    printf("Hickory, dickory, dock,");

    printf("The mouse ran up the clock.");

    printf("The clock struck one,");

    printf("The mouse ran down,");

    printf("Hickory, dickory, dock.");

    return 0;

}

輸出是什么的

Hickory, dickory, dock,The mouse ran up the clock.The clock struck one,The mouse ran down,Hickory, dickory, dock.%

😳這就是沒有添加換行符的原因,加上以后如下所示:

/*beginner/print/print3.c*/

#include <stdio.h>

int main()

{

    printf("Hickory, dickory, dock,\n");

    printf("The mouse ran up the clock.\n");

    printf("The clock struck one,\n");

    printf("The mouse ran down,\n");

    printf("Hickory, dickory, dock.\n");

    return 0;

}

優雅的輸出如下所示:

Hickory, dickory, dock,

The mouse ran up the clock.

The clock struck one,

The mouse ran down,

Hickory, dickory, dock.

 

回車顯示進度條效果

其實回車的意思並不是通俗意義上的回車,你敲下鍵盤,叫做Enter,是另外一種回車。

這里的回車是不換行從頭開始的意思,是ASCII碼為13的特殊字符,換行是ASCII碼為10的特殊字符。

這個示例只能通過自己編譯來使用了,代碼簡單,如下,就能看到進度條的效果了

/*beginner/print/print4.c*/

#include <stdio.h>

#include <unistd.h>

int main()

{

    printf("*          \r");

    fflush(stdout);

    sleep(1);

    printf("*****        \r");

    fflush(stdout);

    sleep(1);

    printf("*******      \r");

    fflush(stdout);

    sleep(1);

    printf("*********      \r");

    fflush(stdout);

    sleep(1);

    printf("*************    \r");

    fflush(stdout);

    sleep(1);

    printf("*****************  \r");

    fflush(stdout);

    sleep(1);

    printf("*********************\r");

    fflush(stdout);

    sleep(1);

    printf("\n\n");

    return 0;

}

運行的時候,可以看到光標在移動,這個用法我是學了2個多月才知道,悲哉!

說明:fflush是用來強行刷新的,因為如果不刷新,有的時候無法顯示,另外sleep是為了演示移動效果,不然毫秒級顯示完成,就看不到效果了。

 

優雅的對齊特性

其實想對齊,是比較簡單的一件事情,直接空格多敲一些就行了,如下所示:

/*beginner/print/print5.c*/

#include <stdio.h>

#include <unistd.h>

int main()

{

    printf("Name      Age ID\n");

    printf("Zhang San 16  1\n");

    printf("Li Si    17  2\n");

    printf("Wang Wu  18  3\n");

    return 0;

}

輸入為:

Name Age ID

Zhang San 16  1

Li Si    17  2

Wang Wu  18  3

但是,如果在我們不知道數字是多少,字符串是多少的時候怎么來做呢,就是制表符的效果了。

很簡單,只要在需要分割的地方加上就可以了:

/*beginner/print/print6.c*/

#include <stdio.h>

#include <unistd.h>

int main()

{

    printf("Name    \tAge\tID\n");

    printf("Zhang San\t16\t1\n");

    printf("Li Si    \t17\t2\n");

    printf("Wang Wu  \t18\t3\n");

    return 0;

}

輸入為:

Name Age ID

Zhang San 16 1

Li Si    17 2

Wang Wu  18 3

 

集大成

這里三個都演示下,可以通過./print_all來查看效果。

###################

The demo of \n

###################

          *         

        *****       

       *******     

          *         

        *****       

       *******     

      *********     

          *         

        *****       

       *******     

      *********     

    *************   

  ***************** 

*********************

        *****       

        *****       

        *****       

        *****       

        *****       

        *****       

*********************

*********************

###################

The demo of \r

###################

*********************

###################

The demo of \t

###################

Name    Age ID

Zhang San 16 1

Li Si    17 2

Wang Wu  18 3

 

編譯運行

還是跟前面的hello world一致,這次還是包含兩類文件,一個是源碼文件print.c,另外一個就是Makefile了。

Makefile如下所示,比上一個稍微復雜了些,其實不難理解,可以搜索Makefile幫助查看信息。

#beginner/print/Makefile

ALL : print1 print2 print3 print4 print5 print6 print_all

print1: print1.c

gcc -o print1 print1.c

print2: print2.c

gcc -o print2 print2.c

print3: print3.c

gcc -o print3 print3.c

print4: print4.c

gcc -o print4 print4.c

print5: print5.c

gcc -o print5 print5.c

print6: print6.c

gcc -o print6 print6.c

print_all: print_all.c

gcc -o print_all print_all.c

運行只需要輸入make,然后./print就可以看到相關的輸出了。

————————————————

- End -

不管你是轉行也好,初學也罷,進階也可,如果你想學編程,進階程序員~+

【值得關注】我的 編程學習交流俱樂部 !【點擊進入】

C語言入門資料(網盤鏈接免費分享):


 

C語言推薦書籍(PDF免費分享):


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM