當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C語言 vfprintf()用法及代碼示例



描述

C庫函數int vfprintf(FILE *stream, const char *format, va_list arg)使用傳遞給它的參數列表將格式化輸出發送到流。

聲明

以下是 vfprintf() 函數的聲明。

int vfprintf(FILE *stream, const char *format, va_list arg)

參數

  • stream- 這是指向標識流的 FILE 對象的指針。

  • format- 這是包含要寫入流的文本的 C 字符串。它可以選擇包含嵌入的格式標簽,這些標簽被後續附加參數中指定的值替換並按要求格式化。格式標簽原型:%[flags][width][.precision][length]specifier,如下所述 -

不。 說明符和輸出
1

c

特點

2

d or i

有符號十進製整數

3

e

使用 e 字符的科學記數法(尾數/ index )

4

E

使用 E 字符的科學記數法(尾數/ index )

5

f

十進製浮點數

6

g

使用 %e 或 %f 中的較短者

7

G

使用 %E 或 %f 中的較短者

8

o

有符號八進製

9

s

字串

10

u

無符號十進製整數

11

x

無符號十六進製整數

12

X

無符號十六進製整數(大寫)

13

p

指針地址

14

n

沒有打印

15

%

特點

不。 標誌和描述
1

-

在給定的字段寬度內為Left-justify;右對齊是默認設置(請參見寬度sub-specifier)。

2

+

即使對於正數,也強製在結果前麵加上加號或減號(+ 或 -)。默認情況下,隻有負數前麵帶有 -ve 符號。

3

(space)

如果不寫任何符號,則在該值之前插入一個空格。

4

#

與 o、x 或 X 說明符一起使用,對於非零的值,該值分別以 0、0x 或 0X 開頭。與 e、E 和 f 一起使用,它會強製寫入的輸出包含小數點,即使後麵沒有數字。默認情況下,如果後麵沒有數字,則不寫入小數點。與 g 或 G 一起使用,結果與 e 或 E 相同,但不會刪除尾隨零。

5

0

Left-pads 用零 (0) 代替空格的數字,其中指定了填充(參見寬度 sub-specifier)。

不。 寬度和描述
1

(number)

最少要打印的字符數。如果要打印的值小於此數字,則結果將用空格填充。即使結果較大,該值也不會被截斷。

2

*

寬度不是在格式字符串中指定的,而是作為必須格式化的參數之前的附加整數值參數。

不。 .精度和描述
1

.number

對於整數說明符 (d, i, o, u, x, X) - precision 指定要寫入的最小位數。如果要寫入的值小於此數字,則結果用前導零填充。即使結果更長,該值也不會被截斷。精度為 0 意味著不為值 0 寫入字符。對於 e、E 和 f 說明符 - 這是小數點後要打印的位數。對於 g 和 G 說明符 - 這是要打印的最大有效數字數。對於 s - 這是要打印的最大字符數。默認情況下,將打印所有字符,直到遇到結束的空字符。對於 c 類型 - 它沒有效果。如果未指定精度,則默認值為 1。如果指定的句點沒有明確的精度值,則假定為 0。

2

.*

精度不是在格式字符串中指定的,而是作為必須格式化的參數之前的附加整數值參數。

不。 長度和描述
1

h

參數被解釋為一個 short int 或 unsigned short int(僅適用於整數說明符 - i、d、o、u、x 和 X)。

2

l

對於整數說明符(i、d、o、u、x 和 X),參數被解釋為 long int 或 unsigned long int,對於說明符 c 和 s,參數被解釋為寬字符或寬字符串。

3

L

該參數被解釋為 long double(僅適用於浮點說明符 - e、E、f、g 和 G)。

  • arg- 表示變量參數列表的對象。這應該由 <stdarg> 中定義的 va_start 宏初始化。

返回值

如果成功,則返回寫入的總字符數,否則返回負數。

示例

下麵的例子展示了 vfprintf() 函數的用法。

#include <stdio.h>
#include <stdarg.h>

void WriteFrmtd(FILE *stream, char *format, ...) {
   va_list args;

   va_start(args, format);
   vfprintf(stream, format, args);
   va_end(args);
}

int main () {
   FILE *fp;

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

   WriteFrmtd(fp, "This is just one argument %d \n", 10);

   fclose(fp);
   
   return(0);
}

讓我們編譯並運行上麵的程序來打開一個文件file.txt用於寫入當前目錄並將寫入以下內容 -

This is just one argument 10

現在讓我們使用以下程序查看上述文件的內容 -

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

讓我們編譯並運行上麵的程序以產生以下結果。

This is just one argument 10

相關用法


注:本文由純淨天空篩選整理自 C library function - vfprintf()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。