日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

vfprintf()函数

發布時間:2023/11/30 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vfprintf()函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

函數聲明:int vfprintf(FILE *stream, const char *format, va_list arg)

函數參數:

stream—這是指向了FILE對象的指針,該FILE對象標識了流。

format—c語言字符串,包含了要被寫入到流stream中的文本。它可以包含嵌入的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(標識)

描述

-

在給定的字段寬度內左對齊,默認右對齊

+

強制在結果之前顯示加號或減號(+或-)

(space)

如果沒有寫如何符號,在在該值前插入一個空格

#

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

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

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

0

在指定填充padding的數字左邊放置零(0)

?

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

參數被解釋為長整形或無符號長整形,適用于整型說明符

L

參數被解釋為長雙精度型

?

arg – 一個標識可變參數列表的對象。這應被<stdarg> 中定義的va_start宏初始化。

?

函數返回值:如果成功,則返回字符總數,否則返回一個負數。

?

實例:

#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 onte argument %d \n",10);fclose(fp);return 0; }

運行以下命令:

exbot@ubuntu:~/wangqinghe/WriteLog/20190708$ gcc vfprintf.c -o vfprintf

exbot@ubuntu:~/wangqinghe/WriteLog/20190708$ ./vfprintf

執行結果:

也可以使用以下程序來查看文件內容:

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

運行結果:

exbot@ubuntu:~/wangqinghe/WriteLog/20190708$ gedit check.c

exbot@ubuntu:~/wangqinghe/WriteLog/20190708$ gcc check.c -o check

exbot@ubuntu:~/wangqinghe/WriteLog/20190708$ ./check

this is just onte argument 10

?

函數解釋:

fgetc()函數:從文件指針stream指向的文件中讀取一個字符,讀取一個字節后,光標位置后移一個字節。

表頭文件:include<stdio.h>

定義函數:int fgetc(FILE *stream);

返回值:fgetc()會返回讀取的字符,若返回EOF則表示到了文件尾,或出現了錯誤。

?

feof()函數:

檢測文件結束符,若文件結束則返回非0值,否則會返回0.

文件結束符只能被clearerr()清除。

?

補充:

EOF是文本文件結束的標志。在文本文件中,數據是以字符的ASCⅡ代碼值的形式存放,普通字符的ASCⅡ代碼的范圍是32到127(十進制),EOF的16進制代碼為0xFF(十進制為-1),因此可以用EOF作為文件結束標志。

當把數據以二進制形式存放到文件中時,就會有-1值的出現,因此不能采用EOF作為二進制文件的結束標志。為解決這一個問題,ASCI C提供一個feof函數,用來判斷文件是否結束。feof函數既可用以判斷二進制文件又可用以判斷文本文件

轉載于:https://www.cnblogs.com/wanghao-boke/p/11152091.html

總結

以上是生活随笔為你收集整理的vfprintf()函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。