C 控制臺輸出

2018-05-19 15:20 更新

學(xué)習(xí)C - C控制臺輸出

要使用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格式

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é)果。

轉(zhuǎn)換整數(shù)的字符

下表列出了整數(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é)果。

轉(zhuǎn)換字符浮點型

下表列出了浮點型輸出規(guī)范中的轉(zhuǎn)換字符:

轉(zhuǎn)換字符生成輸出
f 或 F帶符號的十進制值
e帶指數(shù)的帶符號的十進制值
E作為e,但E代表指數(shù)而不是e
ge或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é)果。

轉(zhuǎn)義序列

您可以在printf()的格式控制字符串中包含空格字符。

空格字符是換行符,回車符,換頁,空格和制表符。

其中一些由轉(zhuǎn)義序列表示,這些如下表所示。

轉(zhuǎn)義序列描述
\b退格
\f換頁或頁彈出
\n換行
\r回車(打印機)或移動到當前行的開頭輸出到屏幕
\t水平制表符

您使用轉(zhuǎn)義序列\(zhòng)\輸出反斜杠字符\。

要將一個%字符寫入stdout,您可以使用%%。

整數(shù)輸出

我們首先嘗試一個整數(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é)果。

例2

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é)果。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號