執行個體
把一些文本寫入到名為 "test.txt" 的文字檔:
<?php$number = 9;$str = "Beijing";$file = fopen("test.txt","w");echo vfprintf($file,"There are %u million bicycles in %s.",array($number,$str));?>
上面的代碼將輸出:
40
下面的文本將被寫入到檔案 "test.txt":
There are 9 million bicycles in Beijing.
定義和用法
vfprintf() 函數把格式化的字串寫到指定的輸出資料流(例如:檔案或資料庫)。
與 fprintf() 不同,vfprintf() 中的參數位於數組中。數組元素將被插入到主字串中的百分比符號(%)符號處。該函數是逐步執行的。在第一個 % 符號處,插入第一個數組元素,在第二個 % 符號處,插入第二個數組元素,依此類推。
注釋:如果 % 符號多於 arg 參數,則您必須使用預留位置。預留位置被插入到 % 符號之後,由數字和 "\$" 組成。請參見執行個體 2。
提示:相關函數:fprintf()、 printf()、 sprintf()、vprintf() 和 vsprintf()
文法
vfprintf(stream,format,argarray)
| 參數 |
描述 |
| stream |
必需。規定在哪裡寫入/輸出字串。 |
| format |
必需。規定字串以及如何格式化其中的變數。 可能的格式值:
%% - 返回一個百分比符號 %
%b - 位元
%c - ASCII 值對應的字元
%d - 包含加號或減號的十進位數(負數、0、正數)
%e - 使用小寫科學計數法(例如 1.2e+2)
%E - 使用大寫的科學計數法(例如 1.2E+2)
%u - 不包含加號或減號的十進位數(大於等於 0)
%f - 浮點數(本地設定)
%F - 浮點數(非本地設定)
%g - 較短的 %e 和 %f
%G - 較短的 %E 和 %f
%o - 八位元
%s - 字串
%x - 十六進位數(小寫字母)
%X - 十六進位數(大寫字母)
附加的格式值。必需放置在 % 和字母之間(例如 %.2f):
注釋:如果使用多個上述的格式值,它們必須按照上面的順序進行使用,不能打亂。 |
| argarray |
必需。帶有參數的一個數組,這些參數會被插到 format 字串中的 % 符號處。 |
技術細節
| 傳回值: |
返回被寫的字串的長度。 |
| PHP 版本: |
5+ |
更多執行個體
執行個體 1
把一些文本寫入到檔案中:
<?php$num1 = 123;$num2 = 456;$file = fopen("test.txt","w");vfprintf($file,"%f%f",array($num1,$num2));?>
下面的文本將被寫入到檔案 "test.txt":
123.000000456.000000
執行個體 2
使用預留位置:
<?php$number = 123;$file = fopen("test.txt","w");vfprintf($file,"With 2 decimals: %1$.2fnWith no decimals: %1$u",array($number));?>
下面的文本將被寫入到檔案 "test.txt":
With 2 decimals: 123.00With no decimals: 123
執行個體 3
使用 printf() 來示範所有可能的格式值:
<?php$num1 = 123456789;$num2 = -123456789;$char = 50; // The ASCII Character 50 is 2// Note: The format value "%%" returns a percent signprintf("%%b = %b <br>",$num1); // Binary numberprintf("%%c = %c <br>",$char); // The ASCII Characterprintf("%%d = %d <br>",$num1); // Signed decimal numberprintf("%%d = %d <br>",$num2); // Signed decimal numberprintf("%%e = %e <br>",$num1); // Scientific notation (lowercase)printf("%%E = %E <br>",$num1); // Scientific notation (uppercase)printf("%%u = %u <br>",$num1); // Unsigned decimal number (positive)printf("%%u = %u <br>",$num2); // Unsigned decimal number (negative)printf("%%f = %f <br>",$num1); // Floating-point number (local settings aware)printf("%%F = %F <br>",$num1); // Floating-point number (not local settings aware)printf("%%g = %g <br>",$num1); // Shorter of %e and %fprintf("%%G = %G <br>",$num1); // Shorter of %E and %fprintf("%%o = %o <br>",$num1); // Octal numberprintf("%%s = %s <br>",$num1); // Stringprintf("%%x = %x <br>",$num1); // Hexadecimal number (lowercase)printf("%%X = %X <br>",$num1); // Hexadecimal number (uppercase)printf("%%+d = %+d <br>",$num1); // Sign specifier (positive)printf("%%+d = %+d <br>",$num2); // Sign specifier (negative)?>
vfprintf(格式化輸出資料至檔案)
相關函數
printf,fscanf,fprintf
表標頭檔
#include<stdio.h>#include<stdarg.h>
定義函數
int vfprintf(FILE *stream,const char * format,va_list ap);
函數說明
vfprintf()會根據參數format字串來轉換並格式化資料,然後將結果輸出到參數stream指定的檔案中,直到出現字串結束(’/0’)為止。關於參數format字串的格式請參考printf()。va_list用法請參考附錄C或vprintf()範例。
傳回值
成功則返回實際輸出的字元數,失敗則返回-1,錯誤原因存於errno中。