天天看點

C 庫函數 - fprintf()

C 标準庫 - <stdio.h>

描述

C 庫函數

int fprintf(FILE *stream, const char *format, ...)

發送格式化輸出到流 stream 中。

聲明

下面是 fprintf() 函數的聲明。

int fprintf(FILE *stream, const char *format, ...)
      

參數

  • stream -- 這是指向 FILE 對象的指針,該 FILE 對象辨別了流。
  • format -- 這是 C 字元串,包含了要被寫入到流 stream 中的文本。它可以包含嵌入的 format 标簽,format 标簽可被随後的附加參數中指定的值替換,并按需求進行格式化。format 标簽屬性是 %[flags][width][.precision][length]specifier ,具體講解如下:
specifier(說明符) 輸出
c 字元
d 或 i 有符号十進制整數
e 使用 e 字元的科學科學記數法(尾數和指數)
E 使用 E 字元的科學科學記數法(尾數和指數)
f 十進制浮點數
g 自動選擇 %e 或 %f 中合适的表示法
G 自動選擇 %E 或 %f 中合适的表示法
o 有符号八進制
s 字元的字元串
u 無符号十進制整數
x 無符号十六進制整數
X 無符号十六進制整數(大寫字母)
p 指針位址
n 無輸出
%
flags(辨別)
- 在給定的字段寬度内左對齊,預設是右對齊(參見 width 子說明符)。
+ 強制在結果之前顯示加号或減号(+ 或 -),即正數前面會顯示 + 号。預設情況下,隻有負數前面會顯示一個 - 号。
(space) 如果沒有寫入任何符号,則在該值前面插入一個空格。
#

與 o、x 或 X 說明符一起使用時,非零值前面會分别顯示 0、0x 或 0X。

與 e、E 和 f 一起使用時,會強制輸出包含一個小數點,即使後邊沒有數字時也會顯示小數點。預設情況下,如果後邊沒有數字時候,不會顯示顯示小數點。

與 g 或 G 一起使用時,結果與使用 e 或 E 時相同,但是尾部的零不會被移除。

在指定填充 padding 的數字左邊放置零(0),而不是空格(參見 width 子說明符)。
width(寬度)
(number) 要輸出的字元的最小數目。如果輸出的值短于該數,結果會用空格填充。如果輸出的值長于該數,結果不會被截斷。
* 寬度在 format 字元串中未指定,但是會作為附加整數值參數放置于要被格式化的參數之前。
.precision(精度)
.number

對于整數說明符(d、i、o、u、x、X):precision 指定了要寫入的數字的最小位數。如果寫入的值短于該數,結果會用前導零來填充。如果寫入的值長于該數,結果不會被截斷。精度為 0 意味着不寫入任何字元。

對于 e、E 和 f 說明符:要在小數點後輸出的小數位數。

對于 g 和 G 說明符:要輸出的最大有效位數。

對于 s: 要輸出的最大字元數。預設情況下,所有字元都會被輸出,直到遇到末尾的空字元。

對于 c 類型:沒有任何影響。

當未指定任何精度時,預設為 1。如果指定時不帶有一個顯式值,則假定為 0。

.* 精度在 format 字元串中未指定,但是會作為附加整數值參數放置于要被格式化的參數之前。
length(長度)
h 參數被解釋為短整型或無符号短整型(僅适用于整數說明符:i、d、o、u、x 和 X)。
l 參數被解釋為長整型或無符号長整型,适用于整數說明符(i、d、o、u、x 和 X)及說明符 c(表示一個寬字元)和 s(表示寬字元字元串)。
L 參數被解釋為長雙精度型(僅适用于浮點數說明符:e、E、f、g 和 G)。
  • 附加參數 -- 根據不同的 format 字元串,函數可能需要一系列的附加參數,每個參數包含了一個要被插入的值,替換了 format 參數中指定的每個 % 标簽。參數的個數應與 % 标簽的個數相同。

傳回值

如果成功,則傳回寫入的字元總數,否則傳回一個負數。

執行個體

下面的執行個體示範了 fprintf() 函數的用法。

#include <stdio.h>

#include <stdlib.h>

int main()

{

   FILE * fp;

   fp = fopen ("file.txt", "w+");

   fprintf(fp, "%s %s %s %d", "We", "are", "in", 2014);

   fclose(fp);

   return(0);

}

讓我們編譯并運作上面的程式,這将建立檔案

file.txt

,它的内容如下:

We are in 2014
      

現在讓我們使用下面的程式檢視上面檔案的内容:

int main ()

   FILE *fp;

   int c;

   fp = fopen("file.txt","r");

   while(1)

   {

      c = fgetc(fp);

      if( feof(fp) )

      {

          break ;

      }

      printf("%c", c);

   }

C 标準庫 - <stdio.h>