php把格式化的字串寫到指定的輸出資料流的函數vfprintf()

來源:互聯網
上載者:User

執行個體

把一些文本寫入到名為 "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):

  • + (在數字前面加上 + 或 - 來定義數位正負性。預設情況下,只有負數才做標記,正數不做標記)

  • ' (規定使用什麼作為填充,預設是空格。它必須與寬度指定器一起使用。例如:%'x20s(使用 "x" 作為填充))

  • - (左調整變數值)

  • [0-9] (規定變數值的最小寬度)

  • .[0-9] (規定小數位元或最大字串長度)

注釋:如果使用多個上述的格式值,它們必須按照上面的順序進行使用,不能打亂。

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中。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.