生活随笔
收集整理的這篇文章主要介紹了
百度百科中关于fwrite的用法说明
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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+,則從文件的末尾開始添加,文件長度加大。
fseek對此函數有作用,但是fwrite
[1]函數寫到用戶空間緩沖區,并未同步到文件中,所以修改后要將內存與文件同步可以用fflush(FILE *fp)函數同步。
4程序示例編輯
示例一:
| 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; } |
與50位技術專家面對面20年技術見證,附贈技術全景圖
總結
以上是生活随笔為你收集整理的百度百科中关于fwrite的用法说明的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。