c 代碼規范 C語言代碼規范



文章插圖
c 代碼規范 C語言代碼規范

文章插圖
賞心悅目的C語言輸出
C語言的輸出功能,超出你的想象,你能想到的,她基本也能做到 。
剛開始還只是照抄printf語句,老是出現下面的情況:
Hello World% $后面才曉得 printf 函數是有特殊規定字符的,比如換行的 \n,換頁的 \f,回車的 \r,以及制表符 \t 等 。
這次就說說是個什么意思以及如何使用 。
本節盡量只使用 printf 函數,除非 有必要,盡量簡潔,然后舉幾個用的最廣的例子 。
換行顯示文本
【c 代碼規范 C語言代碼規范】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("NameAge ID\n");printf("Zhang San 161\n");printf("Li Si172\n");printf("Wang Wu183\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###################NameAgeIDZhang San161Li Si172Wang Wu183編譯運行
還是跟前面的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就可以看到相關的輸出了 。