1. c語言的所有格式符。
%a,%A 讀入一個浮點值(僅C99有效) %c 讀入一個字元 %d 讀入十進制整數 %i 讀入十進制,八進制,十六進制整數 %o 讀入八進制整數 %x,%X 讀入十六進制整數 %s 讀入一個字元串,遇空格、製表符或換行符結束。 %f,%F,%e,%E,%g,%G 用來輸入實數,可以用小數形式或指數形式輸入。 %p 讀入一個指針 %u 讀入一個無符號十進制整數 %n 至此已讀入值的等價字元數 %[] 掃描字元集合 %% 讀%符號 附加格式說明字元表修飾符說明 L/l 長度修飾符 輸入"長"數據 h 長度修飾符 輸入"短"數據 W 整型常數 指定輸入數據所佔寬度 * 表示本輸入項在讀入後不賦值給相應的變數
2. c語言格式字元詳細說明
c語言中的格式說明符,以%開頭,後面接上字母,如%d表示整數,%f表示浮點數,%s表示字元串,%c表示字元等等!
擴展:格式說明符詳細說明
① d格式:用來輸出十進制整數。有以下幾種用法:
%d:按整型數據十進制的實際長度輸出。
%md:m為指定的輸出欄位的寬度。如果數據的位數小於m,則左端補以空格,若大於m,則按實際位數輸出。
%ld:輸出長整型數據。
② o格式:以無符號八進制形式輸出整數。
%d:按整型數據八進制的實際長度輸出。
%lo:對長整型可以用格式輸出
%mo:指定欄位寬度用格式輸出
③ x格式:以無符號十六進制形式輸出整數。
%x:按整型數據十六進制的實際長度輸出。
%lx:對長整型可以用格式輸出
%mx:指定欄位寬度用格式輸出
④ u格式:以無符號十進制形式輸出整數。
%u:按無符號整型數據十進制的實際長度輸出。
%lu:對長整型可以用格式輸出
%mu:指定欄位寬度用格式輸出
⑤ c格式:輸出一個字元。
⑥ s格式:用來輸出一個串。有幾中用法
%s:例如:printf("%s", "CHINA")輸出"CHINA"字元串(不包括雙引號)。
%ms:輸出的字元串佔m列,如字元串長度大於m,將字元串全部輸出。若串長小於m,則左補空格。
%-ms:如果串長小於m,則在m列范圍內,字元串向左靠,右補空格。
%m.ns:輸出佔m列,但只取字元串中左端n個字元。這n個字元輸出在m列的右側,左補空格。
%-m.ns:其中m、n含義同上,n個字元輸出在m列范圍的左側,右補空格。如果n>m,則自動取n值,即保證n個字元正常輸出。
⑦ f格式:用來輸出實數(包括單、雙精度),以小數形式輸出。有以下幾種用法:
%f:不指定寬度,整數部分全部輸出並輸出6位小數。
%m.nf:輸出共佔m列,其中有n位小數,如數值寬度小於m左端補空格。
%-m.nf:輸出共佔n列,其中有n位小數,如數值寬度小於m右端補空格。
⑧ e格式:以指數形式輸出實數。可用以下形式:
%e:數字部分(又稱尾數)輸出6位小數,指數部分佔5位或4位。
%m.ne和%-m.ne:m、n和」-」字元含義與前相同。
此處n指數據的數字部分的小數位數,m表示整個輸出數據所佔的寬度。
⑨ p格式:輸出指針地址
3. c語言的格式符
在c語言輸出中有多種多樣的格式。例如下面這種格式
這個是一個簡單的輸出語句。但是可以讓我們知道什麼是格式符
格式符的目的是為了滿足我們想要輸出的什麼樣格式的數據存在的。(個人理解)
現在我介紹下有幾種格式符。
1.%d和%i:帶符號十進制形式輸出整數的(正數輸出+)
2.%o:以八進制無符號輸出整數
3.%x:十六進制無符號輸出整數,小寫的x是輸出小寫的a-f,大寫X得到 A-F
4.%u:無符號形式輸出瞎缺整數
5.%c:只能輸出一個字元
6.%s:輸出字元冊神巧串
7.%f:小數形式輸出單雙精度,隱含輸出6位小數(默認六位,想要獲取更多就得需要下面知識了)
8.%e:以指數形式輸出實數,這個%e和%E也是輸出的時候e的大小寫區別
9.%g:%f和%e格式中輸出寬度較短的一種格式,不輸出無意義的0.
這個是各種格式符的意義。但是這樣子能基本滿足我們想要輸出的格式,而不是全部
下面是我的見解和做出的結果
我以%f為例做出我能想到的可能性,這個是我實驗用到的例子123.456789
我想在輸出頁面中--10位數--向左對齊(默認向右)--小數點前面取2位--小數點後面取3位
我這個例子後面「-」是輸出完的結束符,自己添加為了好識別。
從這個例子中我們可以發現默認是向右,前面加個負號是向左。
符號後第一位是說明這個輸出佔有多少位。(注意小數點佔一位)
.代表小數點一種格式
第二位表示取小數點後面多少位。這個如果取多了會用0補充,取少州鍵了會四捨五入。
就是假設我取123.4567這個數的小數點後8位,小數點後輸出結果是.45670000
如果我取小數點後2位,小數點後輸出結果是.46
在這個問題中我發現,我理解了事情後沒有去實踐,認為的結果都是自己認為的。實踐挺重要。
文章有問題或者要聯系我[email protected]
4. C語言中什麼是格式符
格式符即在printf()中的%x
d/i
以大符號的十進制形式輸出整數(整數不輸出符號)
o
以八進制無符號形式輸出整數(不輸出前導符)
x,X
以十六進制無符號形式輸出整數(大小寫)
u
用於輸出unsigned類型數據
f
實數格式輸出,6位小數
e
以指數形式輸出實數,輸出13位,其中:1位整數,1位小數點,6位小數,5位指數(含字元e和指數的符號)
g
根據數值大小,自動選擇f或e格式輸出。
c
以字元形式輸出,只輸出一個字元
s
輸出字元串
另:
printf("%#x\n",20);
輸出
0x14
(如果%#x中沒有
#
,
則輸出14沒有0x表示)
5. C語言%s格式符的使用!
s格式符,用來輸出一個字元串。有以下幾種用法:
1、%s。
printf("%s","china");
輸出字元串「china」。
2、%ms。
輸出字元串佔m列,如果字元串本身長度超過m,則可以超過m列,全數輸出;如果字元串小於m,則左補空格。
3、%-ms。
輸出字元串佔m列,如果字元串小於m,則字元串靠左,右左補空格。
4、%m.ns。輸出佔m列,但只取字元串中的左端n個字元,這n個字元輸入輸出在m列的右則,左則補空格。
5、-%m.ns。n個字元輸出在m列的左側,右側補空格。
6.printf 怎麼輸出 % ??? 需要使用兩個百分號,即%%就可以了
int main ()
{
printf("%3s,%7.2s,%.4s,%-5.3s\n","china","china","china","china");
}
china, ch,chin,chi
printf( )的格式字元:
① d格式符用來輸出十進制整數
%d 按整型數據的實際長度輸出
%md 使輸出長度為m,如果數據長度小於m,則左補空格,如果大於m,則輸出實際長度
%ld 輸出長整型數據
② o格式符以八進制形式輸出整數
③ x格式符以十六進制形式輸出整數
④ u格式符用來輸出unsigned型數據,以十進制形式輸出
⑤ c格式符用來輸出一個字元
⑥ s格式符輸出一個字元串
%s輸出實際長度字元串
%ms 輸出的串佔m列,如果串長度小於m,左補空格,如果大於m,實際輸出
%-ms輸出的串佔m列,如果串長度小於m,右補空格,
%m.ns 輸出佔m列,但只取字元串中左端n個字元並靠右對齊
%-m.ns m、n含義同上,靠左對齊,如果n>m,則m自動取n值
⑦ f格式符以小數形式輸出實數
%f 整數部分全部輸出,小數部分輸出6位
%m.nf 輸出數據共佔m列,其中有n位小數。如果數值長度小於m,左補空格
%-m.nf 同上,右補空格
⑧ e格式符以指數形式輸出實數
%e 系統指定6位小數,5位指數(e+002 )
⑨ g格式符輸出實數,根據數值大小,自動選f格式或e格式
6. 求大神整理c語言指令符號及用法大全。
編譯指令
編譯指令
說明
#include
包含另一個文件
#define
定義一個宏(macro)或是常量
#undef
取消一個宏常量的定義
#asm和#endasm
在程序中加入匯編語言的程序
#ifdef、#ifndef、#else、#endif
用於條件式的編譯
註解://—單行註解;
基本數據類型 (int,float,double,char,void)
數據類型
類型說明
長度(位)
數據長度
bit
位
1
0,1
char
字元
8
—128~127
unsigned char
無符號字元
8
0~255
signed char
有符號字元
8
—128~127
int
整型
16
—32768~32767
short int
短整型
16
—32768~32767
unsigned int
無符號整型
16
0~65535
signed int
有符號整型
16
—32768~32767
long int
長整型
32
—2147483648~2147483647
unsigned long int
無符號長整型
32
0~4294967295
signed long int
有符號長整形
32
—2147483648~2147483647
float
浮點數(實數)
32
0.175e-38~0.402e38
double
雙精度浮點
32
0.175e-38~0.402e38
void
空
0
沒任何數據
用戶自定義數據類型格式
typedef struct{
數據類型 變數序列1;
數據類型 變數序列1;
...
}自定義數據類型的名稱;
保留字
_at_,alien,bdata,break,bit,case,char,code,compact,const,continue,data,
default,do,double,far,else,enum,extern,float,for,goto,if,funcused,idata,int,
inline,interrupt,large,long,pdata,_priority_,reentrant,return,sbit,sfr,sfr16,
short,sigend,sizeof,small,static,struct,switchc_task_,typedef,using,union,
unsigned,void,volatile,while,xdata
常量表示法
常數
規則
範例
十進制
一般十進制格式
1234567890
二進制
開頭加上0b
0b00001110
八進制
開頭加上O
O0123
十六進制
開頭加上0x
0xFF45
無符號整數常量
結尾加上U
30000U
長整數常量
結尾加上L
299L
無符號長整數常量
結尾加上UL
327800UL
浮點數的常量
結尾加上F
4.234F
字元常量
以單引號括起來
『a』
字元串常量
以雙引號括起來
「hello」
-----------------------------------------------------運算符-----------------------------------------------------
算術運算
運算符
說明
範例
執行結果
+
加
c=a+b;
c 等於10
—
減
d=a—b;
d 等於6
*
乘
e=a*b;
e 等於16
/
除
f=a/b;
f 等於4
%
取余數
g=a%b;
g 等於0
++
加1
c++;相當於c=c+1;
c 等於11
——
減1
d——;相當於d=d—1;
d 等於5
=
等於
a=8;
設置a等於8
+=
先相加在等於
e+=5;相當於e=e+5;
e 等於21
—=
先相減在等於
f—=5;相當於f=f—5;
f 等於—1
*=
先相乘在等於
b*=5;相當於b=b*5;
b 等於0
/=
先相除在等於
a/=5;相當於a=a/5;
a 等於1
%=
先取余數在等於
a%=5;相當於a=a%5;
a 等於3
※假設a等於8,b等於2
比較運算
運算符
說明
範例
執行結果
==
等於
a==5
F
!=
不等於
a!=5
T
<<o:p>
小於
a<5
F
>
大於
a>5
T
<=
小於等於
a<=5
F
>=
大於等於
a>=5
T
※比較運算結果是個布爾值既TRUE(真值)或FALSE(假值)。假設a等於8
邏輯運算
運算符
說明
範例
執行結果
&&
AND
(a>5)&&(a<10)
T
||
OR
(a<5)||(a>10)
F
!
NOT
!(a>10)
T
※邏輯運算結果是個布爾值既TRUE(真值)或FALSE(假值)。假設a等於8
位邏輯運算
運算符
說明
範例
執行結果
&
AND
a&0x01
a等於1
|
OR
a|0x80
a等於0x85
~
NOT
~a
a等於0xFA
^
XOR
a^0xFF
a等於0xFA
<<
左移
a<<1
a等於0x0A
>>
右移
a>>1
a等於0x0A
※假設a等於5
----------------------------------------------------控制命令---------------------------------------------------
if語句
if(條件) 語句1;
else 語句2;
例:if(d==4) d=0; //如果d等於4就設置d等於0
else d++; //否則就將d加1
if(ticks==0) { //如果ticks等於0
ticks=1000; //ticks 設置成1000
counter[0]++; //counter[0]加1
}
嵌套if語句
例:if(counter[0]==10) {
counter[1]++;
counter[0]=0;
if(counter[1]==10) {
counter[2]++;
counter[1]=0;
}
}
switch語句
switch (變數) {
case 常量1:語句1; break;
case 常量2:語句2; break;
case 常量3:語句3; break;
......
default ; 語句n;
}
for循環
for (初值,條件,變化值) 語句;
例:for(i=0;i<10;i++) x=x+i;
for(i=1;i<10,i++)
for(j=1;j<10,j++)
printf(「%d %d」,i,j);
無窮循環:
for( ; ; );
while循環
while (條件) 語句;
例:while (ch!=!』A』) ch=getche();
無窮循環:
while(1);
do/while循環
do {
語句;
...
} while(條件);
例:do {
ch=getche();
} while (ch!=」A」);
goto語句
loop1:
x++;
if(x<100) goto loop1;
----------------------------------------------------指針和函數------------------------------------------------
指針的定義
數據類型 *指針變數的名字;
例: char *p;
int *x;
指針與數組
例: char filename[80];
char *p;
p=filename; //指針p存放filename的開始地址
int x[5]={1,2,3,4,5};
int *p,sum,i;
p=x; //指針p存放數組x的開始地址
for(i=0;i<5;i++)
sum=sum+p[i]; //p[i]相當於x[i]
指針的運算
1.針變數前面加上*號就是取得指針所指向位置的內容。
例:int x[5]={1,2,3,4,5};
int *p;
p=x; //指針p存放數組x的開始地址
*p=10; //相當於設置x[0]等於10
2.變數前面加上&符號,可以取得一個變數的位置。
例:int x,y;
int *p;
p=&x; //指針p存放x的地址,相當於p是指向x 的指針
*p=1; //相當於設置x等於1
3.&符號也可以加在數組的前面
例:int x[5];
int *p;
p=&x[2]; //指針p存放x[2]的地址,相當於p是指向x[2]的指針
*p=50; //相當於設置x[2]等於50
函數
函數類型 函數名稱(參數序列);
參數說明
{
函數的主體
}
例:void delay (void) { //不返回任何數據的函數
unsigned char i,j; //沒有任何參數的函數
for(i=0,i<255,i++)
for(j=0,j<255,j++);
}
main()
{
...
delay(); //調用函數
}
例:unsigned char sum(unsigned chat a,unsigned chat b)
{
unsigned chat x;
check_GLCD_busyflag(); //函數中可以調用另一個函數
x=a+b;
return x; //return會返回x的數據
}
中斷服務函數
void 中斷服務程序的名稱(void) interrupt 中斷號碼using 寄存器組號碼
{
中斷服務子程序主體
}
中斷號碼
#define IE0_VECTOR 0 //0x03
#define TF0_VECTOR 1 //0x0B
#define IE1_VECTOR 2 //0x13
#define TF1_VECTOR 3 //0x1B
#define SIO_VECTOR 4 //0x23
對於S51有定時器2
#define TF2_VECTOR 5 //0x2B
例:static void xint0_isr(void) interrupt IE0_VECTOR(或0) using 1
{
unsigned char i,j=0xFF;
for(i=0,i<16,i++)
{
j++;
P1=j; //將數值輸出到P1口
delay_4isr();
}
}
-----------------------------------------------------匯編語言--------------------------------------------------
在C中加入匯編語言
例:void delay100us()
{
#pragma asm
mov r7,#1
more: mov r3,#48
djnz r3,$
djnz r7,more
#pragma endasm
}
----------------------------------------------------宏(macro)----------------------------------------------
宏的定義
%*define (macro名稱) (macro的指令)
例:%*define (write_1) (
setb DI
serb SK
clr SK
)
#define 宏的名稱 宏的指令
例:#define uchar unsigned char
C語言中的符號總結
運算符的種類C語言的運算符可分為以下幾類;
1. 算術運算符
用於各類數值運算,包括加減乘除求余自增自減共七種運算
{ ( + ) ,( - ),(* ) ,( / ) ,( % ),( ++ ),(-- )}。
2. 關系運算符
用於比較運算,包括大於(>),小於(<</span>),等於(==),大於等於(>=),
小於等於(<=),不等於(!=)共六種。
3.邏輯運算符
用於邏輯運算,包括與(&&)或(||)非(!)三種.
4.位操作運算符
參與運算的量,按二進制位進行運算,包括:
位與(&),位或(|),位非(~),為異或(^),左移(<<),右移(>>)共六種。
5.賦值運算符
用於賦值運算,分為:
簡單賦值(=)
復合算術賦值(+=,-=,*=,/=,%=)
復合位運算賦值(&=,|=,^=,>>=,<<=)三類共十一種。
6.條件運算符
這是一個三目運算符,用於條件求值(?:)。
7.逗號運算符
用於把若干表達式組合成一個表達式(,)。
8.指針運算符
用於取內容(*)和取地址(&)兩種運算。
9.求位元組數運算符
用於計算數據類型所佔用的位元組數(sizeof)。
10.特殊運算符
有括弧(),下標[],成員(→, .)
1.C的數據類型
基本類型,構造類型,指針類型,空類型
2.基本類型的分類及特點
類型說明符 位元組 數值范圍
字元型char 1 C字元集
基本整型int 2 -32768~32767
短整型short int 2 -32768~32767
長整型 long int 4 -214783648~214783647
無符號型 unsigned 2 0~65535
無符號長整型 unsigned long 4 0~4294967295
單精度實型 float 4 3/4E-38~3/4E+38
雙精度實型 double 8 1/7E-308~1/7E+308
3.常量後綴
L或l 長整型
U或u 無符號數
F或f 浮點數
4.常量類型
整數,長整數,無符號數,浮點數,字元,字元串,符號常數,轉義字元。
5.數據類型轉換
a自動轉換
在不同類型數據的混合運算中,由系統自動實現轉換, 由少位元組類型向多位元組類型轉換。 不同類型的量相互賦值時也由系統自動進行轉換,把賦值號右邊的類型轉換為左邊的類型。
b強制轉換
由強制轉換運算符完成轉換。
6.運算符優先順序和結合性
一般而言,單目運算符優先順序較高,賦值運算符優先順序低。 算術運算符優先順序較高,關系和邏輯運算符優先順序較低。 多數運算符具有左結合性,單目運算符、三目運算符、 賦值
7.表達式
表達式是由運算符連接常量、變數、函數所組成的式子。 每個表達式都有一個值和類型。 表達式求值按運算符的優先順序和結合性所規定的順序進行。
表示輸出類型的格式字元 格式字元意義
d 以十進制形式輸出帶符號整數(正數不輸出符號)
o 以八進制形式輸出無符號整數(不輸出前綴O)
x 以十六進制形式輸出無符號整數(不輸出前綴OX)
u 以十進制形式輸出無符號整數
f 以小數形式輸出單、雙精度實數
e 以指數形式輸出單、雙精度實數
g 以%f%e中較短的輸出寬度輸出單、雙精度實數
c 輸出單個字元
s 輸出字元串
標志字元為-、+、#、空格四種,其意義下表所示:
標志格式字元 標 志 意 義
- 結果左對齊,右邊填空格
+ 輸出符號(正號或負號)空格輸出值為正時冠以空格,為負時冠以負號
# 對c,s,d,u類無影響;對o類, 在輸出時加前
綴o 對x類,在輸出時加前綴0x;對e,g,f 類當結果有小數時才給出小數點
格式字元串
格式字元串的一般形式為: %[*][輸入數據寬度][長度]類型 其中有方括弧[]的項為任選項。各項的意義如下:
1.類型
表示輸入數據的類型,其格式符和意義下表所示。
格式 字元意義
d 輸入十進制整數
o 輸入八進制整數
x 輸入十六進制整數
u 輸入無符號十進制整數
f或e 輸入實型數(用小數形式或指數形式)
c 輸入單個字元
s 輸入字元串
轉義字元
轉義字元是一種特殊的字元常量。轉義字元以反斜線」\」開頭,後跟一個或幾個字元。轉義字元具有特定的含義,不同於字元原有的意義,故稱「轉義」字元。例如,在前面各例題printf函數的格式串中用到的「\n」就是一個轉義字元,其意義是「回車換行」。轉義字元主要用來表示那些用一般字元不便於表示的控制代碼。
常用的轉義字元及其含義
轉義字元 轉義字元的意義
\n 回車換行
\t 橫向跳到下一製表位置
\v 豎向跳格
\b 退格
\r 回車
\f 走紙換頁
\\ 反斜線符」\」
\』 單引號符
\a 鳴鈴
\ddd 1~3位八進制數所代表的字元
\xhh 1~2位十六進制數所代表的字元
廣義地講,C語言字元集中的任何一個字元均可用轉義字元來表示。表2.2中的\ddd和\xhh正是為此而提出的。ddd和hh分別為八進制和十六進制的ASCII代碼。如\101表示字?quot;A」 ,\102表示字母」B」,\134表示反斜線,\XOA表示換行等。轉義字元的使用
在C語言中,對變數的存儲類型說明有以下四種:
auto 自動變數
register 寄存器變數
extern 外部變數
static 靜態變數
自動變數和寄存器變數屬於動態存儲方式, 外部變數和靜態變數屬於靜態存儲方式。在介紹了變數的存儲類型之後, 可以知道對一個變數的說明不僅應說明其數據類型,還應說明其存儲類型。 因此變數說明的完整形式應為: 存儲類型說明符 數據類型說明符 變數名,變數名…; 例如:
static int a,b; 說明a,b為靜態類型變數
auto char c1,c2; 說明c1,c2為自動字元變數
static int a[5]={1,2,3,4,5}; 說明a為靜整型數組
extern int x,y; 說明x,y為外部整型變數
與指針有關的各種說明和意義見下表。
int *p; p為指向整型量的指針變數
int *p[n]; p為指針數組,由n個指向整型量的指針元素組成。
int (*p)[n]; p為指向整型二維數組的指針變數,二維數組的列數為n
int *p() p為返回指針值的函數,該指針指向整型量
int (*p)() p為指向函數的指針,該函數返回整型量
int **p p為一個指向另一指針的指針變數,該指針指向一個整型量。
指針變數的賦值
p可以有以下兩種方式:
(1)指針變數初始化的方法 int a;
int *p=&a;
(2)賦值語句的方法 int a;
int *p;
p=&a;
(1)取地址運算符&
(2)取內容運算符*
7. C語言中格式符的具體應用最好有實例
printf的格式控制的完整格式:
% - 0 m.n l或h 格式字元
下面對組成格式說明的各項加以說明:
①%:表示格式說明的起始符號,不可缺少。
②-:有-表示左對齊輸出,如省略表示右對齊輸出。
③0:有0表示指定空位填0,如省略表示指定空位不填。
④m.n:m指域寬,即對應的輸出項在輸出設備上所佔的字元數。N指精度。用於說明輸出的實型數的小數位數。為指定n時,隱含的精度為n=6位。
⑤l或h:l對整型指long型,對實型指double型。h用於將整型的格式字元修正為short型。
---------------------------------------
格式字元
格式字元用以指定輸出項的數據類型和輸出格式。
①d格式:用來輸出十進制整數。有以下幾種用法:
%d:按整型數據的實際長度輸出。
%md:m為指定的輸出欄位的寬度。如果數據的位數小於m,則左端補以空格,若大於m,則按實際位數輸出。
%ld:輸出長整型數據。
②o格式:以無符號八進制形式輸出整數。對長整型可以用"%lo"格式輸出。同樣也可以指定欄位寬度用「%mo」格式輸出。
例:
main()
{ int a = -1;
printf("%d, %o", a, a);
}
運行結果:-1,177777
程序解析:-1在內存單元中(以補碼形式存放)為(1111111111111111)2,轉換為八進制數為(177777)8。
③x格式:以無符號十六進制形式輸出整數。對長整型可以用"%lx"格式輸出。同樣也可以指定欄位寬度用"%mx"格式輸出。
④u格式:以無符號十進制形式輸出整數。對長整型可以用"%lu"格式輸出。同樣也可以指定欄位寬度用「%mu」格式輸出。
⑤c格式:輸出一個字元。
⑥s格式:用來輸出一個串。有幾中用法
%s:例如:printf("%s", "CHINA")輸出"CHINA"字元串(不包括雙引號)。
%ms:輸出的字元串佔m列,如字元串本身長度大於m,則突破獲m的限制,將字元串全部輸出。若串長小於m,則左補空格。
%-ms:如果串長小於m,則在m列范圍內,字元串向左靠,右補空格。
%m.ns:輸出佔m列,但只取字元串中左端n個字元。這n個字元輸出在m列的右側,左補空格。
%-m.ns:其中m、n含義同上,n個字元輸出在m列范圍的左側,右補空格。如果n>m,則自動取n值,即保證n個字元正常輸出。
⑦f格式:用來輸出實數(包括單、雙精度),以小數形式輸出。有以下幾種用法:
%f:不指定寬度,整數部分全部輸出並輸出6位小數。
%m.nf:輸出共佔m列,其中有n位小數,如數值寬度小於m左端補空格。
%-m.nf:輸出共佔n列,其中有n位小數,如數值寬度小於m右端補空格。
⑧e格式:以指數形式輸出實數。可用以下形式:
%e:數字部分(又稱尾數)輸出6位小數,指數部分佔5位或4位。
%m.ne和%-m.ne:m、n和」-」字元含義與前相同。此處n指數據的數字部分的小數位數,m表示整個輸出數據所佔的寬度。
⑨g格式:自動選f格式或e格式中較短的一種輸出,且不輸出無意義的零。
---------------------------------------
關於printf函數的進一步說明:
如果想輸出字元"%",則應該在「格式控制」字元串中用連續兩個%表示,如:
printf("%f%%", 1.0/3);
輸出0.333333%。
---------------------------------------
對於單精度數,使用%f格式符輸出時,僅前7位是有效數字,小數6位.
對於雙精度數,使用%lf格式符輸出時,前16位是有效數字,小數6位.
對於m.n的格式還可以用如下方法表示(例)
char ch[20];
printf("%*.*s
",m,n,ch);
前邊的*定義的是總的寬度,後邊的定義的是輸出的個數。分別對應外面的參數m和n 。我想這種方法的好處是可以在語句之外對參數m和n賦值,從而控制輸出格式
附實用代碼。