c 中printf 的引數是什麼

2022-02-05 21:05:42 字數 5968 閱讀 6102

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 ...