要使用C在控制臺上顯示消息,請使用printf()在控制臺上寫入消息。
printf()可以傳遞參數(shù),使用%d表示整型數(shù)字,%f表示浮點數(shù)。
對于char數(shù)據(jù)類型,我們可以使用%c來傳遞參數(shù)。
這里是一個示例代碼
#include <stdio.h>
int main() {
int n = 10;
float m = 1.875;
char c = "A ";
printf("%d \n",n);
printf("%f \n",m);
printf("% .2f \n",m);
printf("% .3f \n",m);
printf("%c \n",c);
return 0;
}
上面的代碼生成以下結(jié)果。
您可以在%f上看到寫入6位十進制數(shù)字的浮動數(shù)據(jù)。
您可以通過在點(.)后面?zhèn)鬟f數(shù)字來指定十進制數(shù)字,例如%.2f
和%.3f
。
//some floating-point combinations
#include <stdio.h>
int main(void)
{
const double RENT = 1234.99; // const-style constant
printf("*%f*\n", RENT);
printf("*%e*\n", RENT);
printf("*%4.2f*\n", RENT);
printf("*%3.1f*\n", RENT);
printf("*%10.3f*\n", RENT);
printf("*%10.3E*\n", RENT);
printf("*%+4.2f*\n", RENT);
printf("*%010.2f*\n", RENT);
return 0;
}
上面的代碼生成以下結(jié)果。
printf()函數(shù)的原型是:
int printf_s(char *format, . . .);
第一個參數(shù)是格式控制字符串。此參數(shù)的參數(shù)通常作為顯式字符串常量傳遞給函數(shù)。
函數(shù)的可選參數(shù)是要按順序輸出的值。數(shù)字和類型必須與格式轉(zhuǎn)換說明符對應(yīng)。
下表顯示了可選輸出標志字符如何影響輸出。
字符 | 使用 |
---|---|
+ | 確保有符號輸出值之前總是有一個加號或減號。默認情況下,只有負值有一個符號。 |
- | 指定輸出值左對齊,并填充右邊的空格。輸出的默認定位是正確的。 |
0 | 指定整數(shù)或浮點值應(yīng)用零填充而不是空格,以填充左側(cè)的字段寬度。 |
# | 確保:0將在八進制輸出值之前,0x或0X在十六進制輸出值之前,浮點輸出值將包含小數(shù)點,對于g或G浮點轉(zhuǎn)換字符,尾隨零將不會省略。 |
Space | 指定正值或零值前面加一個空格而不是加號。 |
可選的field_width指定輸出值的最小字段寬度。
如果該值需要更多字符,則該字段將被簡單擴展。
如果它要求小于指定的最小值,則填充空白,除非字段寬度前面有0標志。
可選的精度說明符通常用于浮點輸出值,由一個后跟一個整數(shù)的句點組成。
.n的說明符表示要為浮點值輸出n個小數(shù)位。
如果要輸出的值大于n個有效數(shù)字,則舍入。
如果將其用于整數(shù)轉(zhuǎn)換,則它指定出現(xiàn)在輸出中的最小位數(shù)。
可選大小標志如下表所示。
Flag | 影響 |
---|---|
h | 以下整數(shù)轉(zhuǎn)換說明符適用于短或無符號短參數(shù)。 |
hh | 以下整數(shù)轉(zhuǎn)換說明符適用于signed char或unsigned char參數(shù)。 |
l | 以下整數(shù)轉(zhuǎn)換說明符適用于long或unsigned long參數(shù)。 |
ll | 以下整數(shù)轉(zhuǎn)換說明符適用于long long或unsigned long long參數(shù)。 |
j | 以下整數(shù)轉(zhuǎn)換說明符適用于intmax_t或uintmax_t參數(shù)。 |
z | 以下整數(shù)轉(zhuǎn)換說明符適用于size_t參數(shù)。 |
t | 以下整數(shù)轉(zhuǎn)換說明符適用于ptrdiff_t參數(shù)。 |
L | 以下浮點轉(zhuǎn)換說明符適用于長雙參數(shù)。 |
您可以使用h前綴短類型。
%hd以小數(shù)形式顯示一個小整數(shù),而%ho顯示一個小整數(shù)
因此,h和l前綴可以與u一起用于無符號類型。
例如,八進制形式。
用于打印無符號長類型的%lu符號。
#include <stdio.h>
int main(void)
{
unsigned int un = 3000000000; /* system with 32-bit int */
short end = 200; /* and 16-bit short */
long big = 65537;
long long verybig = 12345678908642;
printf("un = %u and not %d\n", un, un);
printf("end = %hd and %d\n", end, end);
printf("big = %ld and not %hd\n", big, big);
printf("verybig= %lld and not %ld\n", verybig, verybig);
return 0;
}
上面的代碼生成以下結(jié)果。
下表列出了整數(shù)輸出規(guī)范中的轉(zhuǎn)換字符:
轉(zhuǎn)換字符 | 生成輸出 |
---|---|
d 或 i | 帶符號的十進制整數(shù) |
o | 無符號八進制整數(shù) |
u | 無符號十進制整數(shù) |
x | 具有小寫十六進制數(shù)字的無符號十六進制整數(shù)a,b,c,d,e,f |
X | 作為x,但具有大寫的十六進制數(shù)字A,B,C,D,E,F(xiàn) |
以下代碼顯示字符的代碼編號
#include <stdio.h>
int main(void)
{
char ch;
printf("Please enter a character.\n");
scanf("%c", &ch); /* user inputs character */
printf("The code for %c is %d.\n", ch, ch);
return 0;
}
上面的代碼生成以下結(jié)果。
下表列出了浮點型輸出規(guī)范中的轉(zhuǎn)換字符:
轉(zhuǎn)換字符 | 生成輸出 |
---|---|
f 或 F | 帶符號的十進制值 |
e | 帶指數(shù)的帶符號的十進制值 |
E | 作為e,但E代表指數(shù)而不是e |
g | e或f取決于價值和精度的大小 |
G | 作為g,但E代表指數(shù)值 |
a 或 A | 以十六進制形式顯示雙值,十六進制值以0x或0X為前綴,任何以p或P為前綴的指數(shù)。 |
下表列出了指針的輸出規(guī)范中的轉(zhuǎn)換字符:
轉(zhuǎn)換字符 | 生成輸出 |
---|---|
p | 將值作為指針輸出。 |
下表列出了字符輸出規(guī)范中的轉(zhuǎn)換字符:
轉(zhuǎn)換字符 | 生成輸出 |
---|---|
c | 單個字符或精確字符 |
s | 直到達到 '\0'或精度字符已輸出的所有字符 |
#include <stdio.h>
int main(void)
{
printf("%x %X %#x\n", 31, 31, 31);
printf("**%d**% d**% d**\n", 42, 42, -42);
printf("**%5d**%5.3d**%05d**%05.3d**\n", 6, 6, 6, 6);
return 0;
}
上面的代碼生成以下結(jié)果。
您可以在printf()的格式控制字符串中包含空格字符。
空格字符是換行符,回車符,換頁,空格和制表符。
其中一些由轉(zhuǎn)義序列表示,這些如下表所示。
轉(zhuǎn)義序列 | 描述 |
---|---|
\b | 退格 |
\f | 換頁或頁彈出 |
\n | 換行 |
\r | 回車(打印機)或移動到當前行的開頭輸出到屏幕 |
\t | 水平制表符 |
您使用轉(zhuǎn)義序列\(zhòng)\輸出反斜杠字符\。
要將一個%字符寫入stdout,您可以使用%%。
我們首先嘗試一個整數(shù)輸出格式的樣本。
#include <stdio.h>
int main(void)
{
int i = 15, j = 123, k = 4567;
long long li = 56789LL, lj = 12345678901LL, lk = 23456789LL;
printf("i = %d j = %d k = %d i = %6.3d j = %6.3d k = %6.3d\n",
i ,j, k, i, j, k);
printf("i = %-d j = %+d k = %-d i = %-6.3d j = %-6.3d k = %-6.3d\n",
i ,j, k, i, j, k);
printf("li = %d lj = %d lk = %d\n", li, lj, lk);
printf("li = %lld lj = %lld lk = %lld\n", li, lj, lk);
return 0;
}
上面的代碼生成以下結(jié)果。
以下示例顯示了填充和寬度控制。
#include <stdio.h>
int main(void)
{
int k = 678;
// Display formats as heading then display the values
printf("%%d %%o %%x %%X\n");
printf("%d %o %x %X\n", k, k, k, k );
printf("\n|%%8d |%%-8d |%%+8d |%%08d |%%-+8d |\n");
printf("|%8d |%-8d |%+8d |%08d |%-+8d |\n", k, k, k, k, k );
return 0;
}
上面的代碼生成以下結(jié)果。
以下代碼顯示了浮點輸出選項。
#include <stdio.h>
int main(void) {
float fp1 = 345.678f, fp2 = 1.234E6f;
double fp3 = 234567898.0, fp4 = 11.22334455e-6;
printf("%f %+f %-10.4f %6.4f\n", fp1, fp2, fp1, fp2);
printf("%e %+E\n", fp1, fp2);
printf("%f %g %#+f %8.4f %10.4g\n", fp3,fp3, fp3, fp3, fp4);
return 0;
}
上面的代碼生成以下結(jié)果。
printf()有兩個字符數(shù)據(jù)選項:單個字符為%c,字符串為%s。
%lc和%ls用于輸出寬字符。
#include <stdio.h>
#include <limits.h> // For CHAR_MAX
#include <ctype.h> // For isprint()
int main(void)
{
int count = 0;
printf("The printable characters are the following:\n");
// Iterate over all values of type char
for(int code = 0 ; code <= CHAR_MAX ; ++code)
{
char ch = (char)code;
if(isprint(ch)) {
if(count++ % 32 == 0)
printf("\n");
printf(" %c", ch);
}
}
printf("\n");
return 0;
}
上面的代碼生成以下結(jié)果。
以下代碼顯示如何打印長字符串。
#include <stdio.h>
int main(void)
{
printf("Here"s one way to print a ");
printf("long string.\n");
printf("Here"s another way to print a \
long string.\n");
printf("Here"s the newest way to print a "
"long string.\n"); /* ANSI C */
return 0;
}
上面的代碼生成以下結(jié)果。
printf()返回打印的字符數(shù)。
#include <stdio.h>
int main(void)
{
int bph2o = 212;
int rv;
rv = printf("%d F is water"s boiling point.\n", bph2o);
printf("The printf() function printed %d characters.\n",
rv);
return 0;
}
上面的代碼生成以下結(jié)果。
更多建議: