使用 CCS 的 C 語言來編寫 Microchip 16F877A 的程式給智能小車,CCS C 語言的 printf 比 C18 厲害,所以要將 printf句法(Syntax)、參數(Function)、功能(Function)和 格式(Format)都記錄作參考。
句法(Syntax):
printf (string)
printf (cstring, values...)
printf (fname, cstring, values...)
fprintf (stream, cstring, values...)
參數(Function):
String 是一個常量字符串或 終止空字符數的字符矩陣,數值是一個用逗號分隔的變量列表,fname 是功能名用於輸出(默認為 putc 的是沒有指定)的函數名。數據流是一個數據流標識符(一個常量的字節)。
功能(Function):
輸出一個字符串的字符到標準的 RS-232 引腳(前兩種形式)或到指定的功能。格式會按照字符串參數。當使用變量時字符串必須是一個常數。 % 字符在字符串中使用,以指示一個變量值是要被格式化和輸出。Longs 在 printf 會是16或 32位。 A%% 將輸出一個 %。以下格式化規則%。
如果使用 fprintf()函數,然後使用指定的字符流 printf()的違約到 STDOUT(最後使用RS232)。
格式(Format):
通用格式是採用 %nt 形式。 n是可選和可以 1-9 指定有多少個字符輸出,或 01-09 表明前導零,或 1.1 至 9.9 浮點 %w 輸出。t是類型,可為下列其中一個:
類型
|
描述
|
c
|
Character
|
s
|
String or character
|
u
|
Unsigned int
|
d
|
Singed int
|
Lu
|
Long unsigned int
|
Ld
|
Long signed int
|
x
|
Hex int (Lower case)
|
X
|
Hex int (Upper case)
|
Lx
|
Hex long int (Lower case)
|
LX
|
Hex long int (Upper case)
|
f
|
Float with truncated decimal
|
g
|
Float with rounded decimal
|
e
|
Float in exponential format
|
w
|
Unsigned int with decimal place inserted. Specify two numbers for n. The first is a total field width. The second is the desired number of decimal places.
|
格式示例:
Specifier
|
Value=0x12
|
Value=0xfe
|
%03u
|
018
|
254
|
%u
|
18
|
254
|
U%2u
|
18
|
*
|
%5
|
18
|
254
|
%d
|
18
|
-2
|
%x
|
12
|
fe
|
%X
|
12
|
FE
|
%4X
|
0012
|
00FE
|
%3.1w
|
1.8
|
25.4
|
示例程式:
#include
#include
int main()
{
char c, s[20], *p;
int a=1234, *i;
float f=3.141592653589;
double x=0.12345678987654321;
p="How do you do";
strcpy(s, "Hello, Comrade");
*i=12;
c='\x41';
printf("a=%d\n", a); /*結果輸出十進位整數a=1234*/
printf("a=%6d\n", a); /*結果輸出6位十進位數字a= 1234*/
printf("a=%06d\n", a); /*結果輸出6位十進位數字a=001234*/
printf("a=%2d\n", a); /*a超過2位, 按實際值輸出a=1234*/
printf("*i=%4d\n", *i); /*輸出4位元十進位整數*i= 12*/
printf("*i=%-4d\n", *i); /*輸出左對齊4位元十進位整數*i=12*/
printf("i=%p\n", i); /*輸出位址i=06E4*/
printf("f=%f\n", f); /*輸出浮點數f=3.141593*/
printf("f=6.4f\n", f); /*輸出6位其中小數點後4位的浮點數f=3.1416*/
printf("x=%lf\n", x); /*輸出長浮點數x=0.123457*/
printf("x=%18.16lf\n", x); /*輸出18位其中小數點後16位的長浮數 x=0.1234567898765432*/
printf("c=%c\n", c); /*輸出字元c=A*/
printf("c=%x\n", c); /*輸出字元的ASCII碼值c=41*/
printf("s[]=%s\n", s); /*輸出陣列字串s[]=Hello, Comrade*/
printf("s[]=%6.9s\n", s); /*輸出最多9個字元的字串s[]=Hello,Co*/
printf("s=%p\n", s); /*輸出陣列字串首字元位址s=FFBE*/
printf("*p=%s\n", p); /*輸出指標字串p=How do you do*/
printf("p=%p\n", p); /*輸出指針的值p=0194*/
getch();
retunr 0;
}
|
2013年6月10日 天氣報告
氣溫:27.3 度 @ 23:10
相對濕度:百分之83%
天氣:微雨
沒有留言:
張貼留言