C 庫函數(shù) - fprintf()

C 標(biāo)準(zhǔn)庫 - <stdio.h> C 標(biāo)準(zhǔn)庫 - <stdio.h>

描述

C 庫函數(shù) int fprintf(FILE *stream, const char *format, ...) 發(fā)送格式化輸出到流 stream 中。

聲明

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

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

參數(shù)

  • stream -- 這是指向 FILE 對(duì)象的指針,該 FILE 對(duì)象標(biāo)識(shí)了流。
  • format -- 這是 C 字符串,包含了要被寫入到流 stream 中的文本。它可以包含嵌入的 format 標(biāo)簽,format 標(biāo)簽可被隨后的附加參數(shù)中指定的值替換,并按需求進(jìn)行格式化。format 標(biāo)簽屬性是 %[flags][width][.precision][length]specifier,具體講解如下:
specifier(說明符)輸出
c字符
d 或 i有符號(hào)十進(jìn)制整數(shù)
e使用 e 字符的科學(xué)科學(xué)記數(shù)法(尾數(shù)和指數(shù))
E使用 E 字符的科學(xué)科學(xué)記數(shù)法(尾數(shù)和指數(shù))
f十進(jìn)制浮點(diǎn)數(shù)
g自動(dòng)選擇 %e 或 %f 中合適的表示法
G自動(dòng)選擇 %E 或 %f 中合適的表示法
o有符號(hào)八進(jìn)制
s字符的字符串
u無符號(hào)十進(jìn)制整數(shù)
x無符號(hào)十六進(jìn)制整數(shù)
X無符號(hào)十六進(jìn)制整數(shù)(大寫字母)
p指針地址
n無輸出
%字符

flags(標(biāo)識(shí))描述
-在給定的字段寬度內(nèi)左對(duì)齊,默認(rèn)是右對(duì)齊(參見 width 子說明符)。
+強(qiáng)制在結(jié)果之前顯示加號(hào)或減號(hào)(+ 或 -),即正數(shù)前面會(huì)顯示 + 號(hào)。默認(rèn)情況下,只有負(fù)數(shù)前面會(huì)顯示一個(gè) - 號(hào)。
(space)如果沒有寫入任何符號(hào),則在該值前面插入一個(gè)空格。
#與 o、x 或 X 說明符一起使用時(shí),非零值前面會(huì)分別顯示 0、0x 或 0X。
與 e、E 和 f 一起使用時(shí),會(huì)強(qiáng)制輸出包含一個(gè)小數(shù)點(diǎn),即使后邊沒有數(shù)字時(shí)也會(huì)顯示小數(shù)點(diǎn)。默認(rèn)情況下,如果后邊沒有數(shù)字時(shí)候,不會(huì)顯示顯示小數(shù)點(diǎn)。
與 g 或 G 一起使用時(shí),結(jié)果與使用 e 或 E 時(shí)相同,但是尾部的零不會(huì)被移除。
0在指定填充 padding 的數(shù)字左邊放置零(0),而不是空格(參見 width 子說明符)。

width(寬度)描述
(number)要輸出的字符的最小數(shù)目。如果輸出的值短于該數(shù),結(jié)果會(huì)用空格填充。如果輸出的值長(zhǎng)于該數(shù),結(jié)果不會(huì)被截?cái)唷?/td>
*寬度在 format 字符串中未指定,但是會(huì)作為附加整數(shù)值參數(shù)放置于要被格式化的參數(shù)之前。

.precision(精度)描述
.number對(duì)于整數(shù)說明符(d、i、o、u、x、X):precision 指定了要寫入的數(shù)字的最小位數(shù)。如果寫入的值短于該數(shù),結(jié)果會(huì)用前導(dǎo)零來填充。如果寫入的值長(zhǎng)于該數(shù),結(jié)果不會(huì)被截?cái)唷>葹?0 意味著不寫入任何字符。
對(duì)于 e、E 和 f 說明符:要在小數(shù)點(diǎn)后輸出的小數(shù)位數(shù)。
對(duì)于 g 和 G 說明符:要輸出的最大有效位數(shù)。
對(duì)于 s: 要輸出的最大字符數(shù)。默認(rèn)情況下,所有字符都會(huì)被輸出,直到遇到末尾的空字符。
對(duì)于 c 類型:沒有任何影響。
當(dāng)未指定任何精度時(shí),默認(rèn)為 1。如果指定時(shí)不帶有一個(gè)顯式值,則假定為 0。
.*精度在 format 字符串中未指定,但是會(huì)作為附加整數(shù)值參數(shù)放置于要被格式化的參數(shù)之前。

length(長(zhǎng)度)描述
h參數(shù)被解釋為短整型或無符號(hào)短整型(僅適用于整數(shù)說明符:i、d、o、u、x 和 X)。
l參數(shù)被解釋為長(zhǎng)整型或無符號(hào)長(zhǎng)整型,適用于整數(shù)說明符(i、d、o、u、x 和 X)及說明符 c(表示一個(gè)寬字符)和 s(表示寬字符字符串)。
L參數(shù)被解釋為長(zhǎng)雙精度型(僅適用于浮點(diǎn)數(shù)說明符:e、E、f、g 和 G)。
  • 附加參數(shù) -- 根據(jù)不同的 format 字符串,函數(shù)可能需要一系列的附加參數(shù),每個(gè)參數(shù)包含了一個(gè)要被插入的值,替換了 format 參數(shù)中指定的每個(gè) % 標(biāo)簽。參數(shù)的個(gè)數(shù)應(yīng)與 % 標(biāo)簽的個(gè)數(shù)相同。

返回值

如果成功,則返回寫入的字符總數(shù),否則返回一個(gè)負(fù)數(shù)。

實(shí)例

下面的實(shí)例演示了 fprintf() 函數(shù)的用法。

#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);
}

讓我們編譯并運(yùn)行上面的程序,這將創(chuàng)建文件 file.txt,它的內(nèi)容如下:

We are in 2014

現(xiàn)在讓我們使用下面的程序查看上面文件的內(nèi)容:

#include <stdio.h>

int main ()
{
   FILE *fp;
   int c;

   fp = fopen("file.txt","r");
   while(1)
   {
      c = fgetc(fp);
      if( feof(fp) )
      {
          break ;
      }
      printf("%c", c);
   }
   fclose(fp);
   return(0);
}

C 標(biāo)準(zhǔn)庫 - <stdio.h> C 標(biāo)準(zhǔn)庫 - <stdio.h>