1樓:糖糖寳寳
1、printf的引數是可變的,可以在標頭檔案中查詢的,第一個引數是格式字串,然後跟進的是各個需要輸出的變數,如printf("%d %d %c\n",a,b,c);
"%d %d %c\n"這個字串是第一個引數,a是第二個,b是第三個,c是第四個;
printf的引數個數是可變的,要根據你需要輸出的變數而定;
2、資料型別:
包括:char,int,float,double以及unsigned int /char;long int ,long float,long long int;short int,還包括struct,union,enum等等;
3、資料結構簡單的說就是資料的組織形式,包括邏輯結構和物理結構;
主要由資料元素,資料關係和資料操作組成。
2樓:
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()
執行結果:-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位.
c語言中的printf()這樣的有不定個引數的函式是如何實現的
3樓:匿名使用者
從格式控制字串中提取格式控制字元,再根據格式控制字元去查詢後的引數。
4樓:不是很無知
msdn裡搜尋一下va_arg, va_end, va_start你就知道了。
5樓:匿名使用者
以前看過..忘掉了.和c++的函式過載不同,是根據第一個引數的控制字元實現的,具體想不起來了.
c語言中printf函式中%s是什麼意思
6樓:四舍**入
%c在c語言中代
表字元型格式符。
%s在c語言中代表字串型格式符。
%c和%s一般用在printf、sprintf等字串格式化函式中,用於決定格式化引數的資料型別。如printf("%s", a)會將變數a作為字串型別進行格式化。
printf()函式是格式化輸出函式, 一般用於向標準輸出裝置按規定格式輸出資訊。
printf()函式的呼叫格式為: printf("《格式化字串》", 《參量表》)。
擴充套件資料:c語言的格式輸出中,%c,%s這些代表要輸出的資料的資料型別,例如:
%d 十進位制有符號整數
%u 十進位制無符號整數
%f 浮點數
%s 字串
%c 單個字元
%p 指標的值
%e 指數形式的浮點數
%x, %x 無符號以十六進位制表示的整數
%0 無符號以八進位制表示的整數
%g 自動選擇合適的表示法
7樓:素顏以對
輸入輸出的字串標準型別。
這是c語言的格式輸出,%c,%s這些代表你要輸出的資料的資料型別:%d 十進位制有符號整數
%u 十進位制無符號整數
%f 浮點數
%s 字串
%c 單個字元
%p 指標的值
%e 指數形式的浮點數
%x, %x 無符號以十六進位制表示的整數
%0 無符號以八進位制表示的整數
%g 自動選擇合適的表示法
列子scanf("%s",&ch);這是輸入printf("%s",ch);這是輸出
還有其他型別,整數型別是%d,單精度浮點型別,也就是小數是%f,字元型別%c,
8樓:帷幕
是的,因為字串不是一種基本資料型別,是字元陣列,一個字元佔據陣列中的一個位置。給了指標後字元陣列的首地址就被得到了,然後就會從首地址列印到\0出現。沒有\0就會因為未定義而出現亂碼。
9樓:匿名使用者
因為c沒有字串,於是猥瑣的使用字元陣列的起始下標當做所謂的字串的指標。
10樓:匿名使用者
printf函式中%s是輸出字串
11樓:書到用時晚
記住就好、不用深究、等以後接觸多了、就不會在意這個叻、只要記著輸出的是從字串的首地址開始輸出。
如何在c語言中用printf()輸出某個值的地址?
12樓:
可以用printf("%d",&var);輸出變數地址(10進製表示).
之所以每次都輸出相同的地址值,是因為在c編譯系統中為每一個變數僅分配一個記憶體地址,就是說不管這個變數儲存的是什麼值,它的記憶體地址總還是不變的.
13樓:匿名使用者
如int y;
printf("%x",&y);
將以16進位制的形式輸出地址。
14樓:
輸出這個地址的指標就ok啦!!!
c語言如何在可變引數函式中使用printf?
15樓:兔子和小強
如@psxf91所答,應使用v*系列的函式來實現。對比下printf與vprintf函式原型:
void printf(const char *format, ...);
void vprintf(const char *format, va_list ap);
可以看出二者的差別。vprintf才接收va_list型別,printf接收的是不定引數。
因此,要實現你的要求**如下:
#include "stdarg.h"
void fun(const char *fmt, ...)
16樓:匿名使用者
我記得有個函式叫vprintf,
用stdarg.h的巨集把va_list拿到
然後傳進去,即可。
17樓:匿名使用者
找到printf的原型,根據這個實現,一般可變引數用的比較少,能不實現就不要實現,以防以後遇到問題.解決起來麻煩!
18樓:儲貞拓跋凝蝶
你可以用字元指標作為函式的引數,自己在函式裡面設計一個格式去讀這個指標指向的一串字元。
比如printf
,scanf
函式就是這樣的。函式引數就有字元指標。
例如printf("the
data
is%d",x);
字串"the
data
is%d"的首地址給了字元指標。
printf函式中格式符"%c"對應的引數除了字元型別還可以是什麼
19樓:匿名使用者
實際上是什麼型別並不重要。大部分值會被強制型別轉化為char。
但最好以%c輸出char
20樓:匿名使用者
還可以是short或者int型別,但其值不好超過255,否則輸出就不可預料了。
不過一般來講,如果是要輸出%c,最好還是對應著用char型別。
21樓:金色潛鳥
%c 對應的是 char 型。
char 型實際上是一位元組整型,所以也可以用於整型,但數值範圍是 1位元組, 即 0 - 0xff.
c語言中printf()後的括號裡面的怎麼寫,表示什麼?
22樓:匿名使用者
printf("任意文字或字元");
printf("任意字元1 %d 任意字元2 %s",整型變數1,字元型變數2);
或者舉個更簡單的例子顯示的結果就是a=1,b=2
23樓:匿名使用者
printf([字串][,變數])
字串:如"aabb","aaa%defdk","dsf%feadi"
變數:a,b,d,3,5,6...
可以只有字串無變數,但是隻有變數沒有字串,那就好無意義了。
為什麼?不知道你沒有沒看到在上面的三個字串中後面兩個字串中都有一個%,重點就在這裡
%d表示int型別的值,看下面的例子你就會明白:
a=1,b=2
printf("a=%d,b=%d",a,b)結果為:a=1,b=2
其中第一個%d會用第一個變數的值來代替,第二個%d會用第二個變數的值來代替。如果還有,則以此類推就可以了。
關於%d是什麼,你就可以去參考第二位朋友的回答了!
c語言printf72fa中的72是什麼意思
格式字元來 7.2f,表示將變數 自a顯示成為一個浮點數,共bai佔7位,du小數部分佔2位,小數點zhi 算1位 如果函式dao的開頭定義是int main 或者int 那麼這個函式最後的return 0表示這個函式的返回值為0,不能省掉。7位有效數字 其實是佔位符號 裡面包括後面的兩位小數和小數...
c語言printf中25s是什麼意思
確切的說應該是這樣書寫 printf s m,n,ch m代表輸出總長度 前面補m n個空格,如果n大於m,那麼根據n擷取 n代表截止到字串ch的n位 0 n 1ch字串指標 而 25s則是擷取前25個字元,0 24 來自華夏聯盟 輸出其中的25個字元 還有問題可以繼續問我 c語言中printf 5...
c語言中printf5 2f 中5 2是什麼意思
小數點前面的數字表示輸出列數 數字位數大於它時,按實際位數輸出,小數點前空缺也是 小數點後面的數字表示輸出的小數點位數,如果位數不足就會四捨五入,如果位數不夠顯示就會在後面補0.比如x 12.31913 則printf 5.2f x 就是 12.32 注意小數點也算一位數長!又如x 2.31913 ...