fwrite
fwrite是C語言函式,指向檔案寫入一個資料塊。
- 中文名
- 寫資料函式
- 外文名
- fwrite
- 類 別
- 程式語言函式
- 特 點
- c語言
- 標頭檔案
- stdio.h
功能
編輯C語言函式,向檔案寫入一個資料塊
用法
編輯size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);
注意:這個函式以二進位制形式對檔案進行操作,不侷限於文字檔案
返回值:返回實際寫入的資料塊數目
(1)buffer:是一個指標,對fwrite來說,是要獲取資料的地址;
(2)size:要寫入內容的單位元組數;
(3)count:要進行寫入size位元組的資料項的個數;
(4)stream:目標檔案指標;
(5)返回實際寫入的資料項個數count。
說明:寫入到檔案的哪裡? 這個與檔案的開啟模式有關,如果是w+,則是從file pointer指向的地址開始寫,替換掉之後的內容,檔案的長度可以不變,stream的位置移動count個數;如果是a+,則從檔案的末尾開始新增,檔案長度加大。
程式示例
編輯
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#include <stdio.h> struct mystruct { int i; char cha; }; int main( void ) { FILE *stream; struct mystruct s; if ((stream = fopen ( "TEST.$$$" , "wb" )) == NULL) /* open file TEST.$$$ */ { fprintf (stderr, "Cannot open output file.\n" ); return 1; } s.i = 0; s.cha = 'A' ; fwrite (&s, sizeof (s), 1, stream); /* 寫的struct檔案*/ fclose (stream); /*關閉檔案*/ return 0; } |
示例二:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#include<stdio.h> #define SIZE 1 typedef struct { char name[10]; int num; int age; char addr[15]; }student; student stu[SIZE]; void save() { FILE *fp; int i; if ((fp= fopen ( "dat.txt" , "w" ))==NULL) { printf ( "無法開啟此檔案!\n" ); return ; } for (i=0;i<SIZE;i++) if ( fwrite (&stu[i], sizeof (student), 1, fp) != 1) printf ( "檔案寫入錯誤。!\n" ); fclose (fp); } void main() { int i; for (i=0;i<SIZE;i++) scanf ( "%s%d%d%s" ,&stu[i].name,&stu[i].num,&stu[i].age,&stu[i].addr); save(); } |
示例三:
1
2
3
4
5
6
7
8
9
10
11
|
/* fwrite example : write buffer */ #include <stdio.h> int main () { FILE * pFile; char buffer[] = { 'x' , 'y' , 'z' }; pFile = fopen ( "myfile.bin" , "wb" ); fwrite (buffer , sizeof (buffer), 1 , pFile ); fclose (pFile); return 0; } |
稱為myfile.bin的一個檔案被建立並儲存到它的緩衝區的內容。為了簡單起見,該緩衝區包含Char元素,但它可以包含任何其他型別。.
sizeof(buffer)位元組陣列的長度(在這種情況下,它是三個,因為陣列有三個元素,每次一個位元組)。
示例四:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
//程式示例 fwrite fread fseek #include <stdio.h> int main () { FILE *fp; char msg[] = "file content" ; char buf[20]; fp = fopen ( "d:\\a\\a.txt" , "w+" ); if (NULL == fp) { printf ( "The file doesn't exist!\n" ); return -1; } fwrite (msg, strlen (msg),1,fp); //把字串內容寫入到檔案 fseek (fp,0,SEEK_SET); //定位檔案指標到檔案開始位置 fread (buf, strlen (msg),1,fp); //把檔案內容讀入到快取 buf[ strlen (msg)] = '\0' ; //刪除快取內多餘的空間 printf ( "buf = %s\n" ,buf); printf ( "strlen(buf) = %d\n" , strlen (buf)); return 0; } |