-
fprintf
鎖定
- 中文名
- fprintf
- 外文名
- fprintf
- 功 能
- 傳送格式化輸出到一個文件中
- 返回值
- 輸出字符數
- 應 用
- C語言編程
- 頭文件
- <cstdio>
目錄
- 1 fprintf語法形式
- ▪ 函數聲明
- ▪ 參數
- ▪ 功能
- ▪ 函數説明
- 2 用法詳解
- ▪ specifier説明符
- ▪ flags標識
- ▪ width寬度
- ▪ .precision精度
- ▪ length長度
- ▪ 附加參數
- 3 程序示例VC
fprintffprintf語法形式
fprintf函數聲明
int fprintf (FILE* stream, const char*format, [argument])
fprintf參數
- stream-- 這是指向 FILE 對象的指針,該 FILE 對象標識了流。
- format-- 這是 C 字符串,包含了要被寫入到流 stream 中的文本。它可以包含嵌入的 format 標籤,format 標籤可被隨後的附加參數中指定的值替換,並按需求進行格式化。format 標籤屬性是%[flags][width][.precision][length]specifier
fprintf功能
fprintf()函數根據指定的格式(format),向輸出流(stream)寫入數據(argument)。
fprintf函數説明
fprintf用法詳解
C 庫函數int fprintf(FILE *stream, char *format[, argument,...]);
format 標籤屬性是:%[flags][width][.precision][length]specifier
fprintfspecifier説明符
specifier(説明符) | 輸出 |
---|---|
c | 字符 |
d 或 i | 有符號十進制整數 |
e | 使用 e 字符的科學科學記數法(尾數和指數) |
E | 使用 E 字符的科學科學記數法(尾數和指數) |
f | 十進制浮點數 |
g | 自動選擇 %e 或 %f 中合適的表示法 |
G | 自動選擇 %E 或 %f 中合適的表示法 |
o | 有符號八進制 |
s | 字符的字符串 |
u | 無符號十進制整數 |
x | 無符號十六進制整數 |
X | 無符號十六進制整數(大寫字母) |
p | 指針地址 |
n | 無輸出 |
% | 字符 |
fprintfflags標識
flags(標識) | 描述 |
---|---|
- | 在給定的字段寬度內左對齊,默認是右對齊(參見 width 子説明符)。 |
+ | 強制在結果之前顯示加號或減號(+ 或 -),即正數前面會顯示 + 號。默認情況下,只有負數前面會顯示一個 - 號。 |
(space) | 如果沒有寫入任何符號,則在該值前面插入一個空格。 |
# | 與 o、x 或 X 説明符一起使用時,非零值前面會分別顯示 0、0x 或 0X。 與 e、E 和 f 一起使用時,會強制輸出包含一個小數點,即使後邊沒有數字時也會顯示小數點。默認情況下,如果後邊沒有數字時候,不會顯示顯示小數點。 與 g 或 G 一起使用時,結果與使用 e 或 E 時相同,但是尾部的零不會被移除。 |
0 | 在指定填充 padding 的數字左邊放置零(0),而不是空格(參見 width 子説明符)。 |
fprintfwidth寬度
width(寬度) | 描述 |
---|---|
(number) | 要輸出的字符的最小數目。如果輸出的值短於該數,結果會用空格填充。如果輸出的值長於該數,結果不會被截斷。 |
* | 寬度在 format 字符串中未指定,但是會作為附加整數值參數放置於要被格式化的參數之前。 |
fprintf.precision精度
.precision(精度) | 描述 |
---|---|
.number | 對於整數説明符(d、i、o、u、x、X):precision 指定了要寫入的數字的最小位數。如果寫入的值短於該數,結果會用前導零來填充。如果寫入的值長於該數,結果不會被截斷。精度為 0 意味着不寫入任何字符。 對於 e、E 和 f 説明符:要在小數點後輸出的小數位數。 對於 g 和 G 説明符:要輸出的最大有效位數。 對於 s: 要輸出的最大字符數。默認情況下,所有字符都會被輸出,直到遇到末尾的空字符。 對於 c 類型:沒有任何影響。 當未指定任何精度時,默認為 1。如果指定時不帶有一個顯式值,則假定為 0。 |
.* | 精度在 format 字符串中未指定,但是會作為附加整數值參數放置於要被格式化的參數之前。 |
fprintflength長度
length(長度) | 描述 |
---|---|
h | 參數被解釋為短整型或無符號短整型(僅適用於整數説明符:i、d、o、u、x 和 X)。 |
l | 參數被解釋為長整型或無符號長整型,適用於整數説明符(i、d、o、u、x 和 X)及説明符 c(表示一個寬字符)和 s(表示寬字符字符串)。 |
L | 參數被解釋為長雙精度型(僅適用於浮點數説明符:e、E、f、g 和 G)。 |
fprintf附加參數
根據不同的 format 字符串,函數可能需要一系列的附加參數,每個參數包含了一個要被插入的值,替換了 format 參數中指定的每個 % 標籤。參數的個數應與 % 標籤的個數相同。
fprintf程序示例VC
函數範例
//... #include <cstdio> int main(void) { FILE *FSPOINTER; char STRBUFF[16] = "Hello World."; //... FSPOINTER = fopen("HELLO.TXT", "w+"); //... fprintf(FSPOINTER, "%s", STRBUFF); //... return 0; } 輸出至文件HELLO.TXT: Hello World
示例一
#include <cstdio> int main(void) { FILE *in,*out; in = fopen("\\AUTOEXEC.BAT", "rt"); if(in == NULL) { fprintf(in, "Can not open inputfile.\n"); return 1; } out = fopen("\\AUTOEXEC.BAT", "wt"); if(out == NULL) { fprintf(out, "Can not open outputfile.\n"); return 1; } while(!feof(in)) fputc(fgetc(in), out); fclose(in); fclose(out); return 0; }
示例二
#include <cstdio> #include <cstdlib> #include <cprocess> FILE* stream; int main(void) { int i = 10; double fp = 1.5; char s[] = "this is a string"; char c = '\n'; stream = fopen("fprintf.out", "w"); fprintf(stream, "%s%c", s, c); fprintf(stream, "%d\n", i); fprintf(stream, "%f\n", fp); fclose(stream); system("typefprintf.out"); return 0; }
輸出至文件fprintf.out:
this is a string 10 1.500000
示例三
#include <cstdio> int main() { FILE* fp; int i = 617; char* s = "that is a good new"; fp = fopen("text.dat", "w"); fputs("total", fp); fputs(":", fp); fprintf(fp, "%d\n", i); fprintf(fp, "%s", s); fclose(fp); return 0; } 輸出至文件text.dat:
total:617 that is a good new