您好,登錄后才能下訂單哦!
這篇文章主要介紹“C/C++文件的操作函數介紹”,在日常操作中,相信很多人在C/C++文件的操作函數介紹問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”C/C++文件的操作函數介紹”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
fwrite和fread是以記錄為單位的I/O函數,fread和fwrite函數一般用于二進制文件的輸入輸出。
1.函數功能
用來讀寫一個數據塊。
2.一般調用形式
fread(buffer,size,count,fp); fwrite(buffer,size,count,fp);
3.說明
(1)buffer:是一個指針,對fread來說,它是讀入數據的存放地址。對fwrite來說,是要輸出數據的地址。
(2)size:要讀寫的字節數;
(3)count:要進行讀寫多少個size字節的數據項;
(4)fp:文件型指針。
注意:1 完成次寫操(fwrite())作后必須關閉流(fclose());
2 完成一次讀操作(fread())后,如果沒有關閉流(fclose()),則指針(FILE * fp)自動向后移動前一次讀寫的長度,不關閉流繼續下一次讀操作則接著上次的輸出繼續輸出;
3 fprintf() : 按格式輸入到流,其原型是int fprintf(FILE *stream, const char *format[, argument, ...]);其用法和printf()相同,不過不是寫到控制臺,而是寫到流罷了。注意的是返回值為此次操作寫入到文件的字節數。
如:
int c = fprintf(fp, "%s %s %d %f", str1,str2, a, b) ;
str1:10字節;str2: 10字節;a:2字節;b:8字節,c為33,因為寫入時不同的數據間自動加入一個空格。
文件使用之后一定要關閉,否則將不能正確顯示內容.fwrite:讀入兩個學生信息然后用fwrite存入文件
fread:用fread從文件中讀出學生信息。
fwrite.c
#include <stdio.h> #define SIZE 2 struct student_type { char name[10]; int num; int age; char addr[10]; }stud[SIZE]; void save() { FILE *fp; int i; if((fp=fopen("stu_list","wb"))==NULL) { printf("cant open the file"); exit(0); } for(i=0;i<SIZE;i++) { if(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1) printf("file write error\n"); } fclose(fp); } main() { int i; for(i=0;i<SIZE;i++) { scanf("%s%d%d%s",&stud[i].name,&stud[i].num,&stud[i].age,&stud[i].addr); save(); } for(i=0;i<SIZE;i++) { printf("%s,%d,%d",stud[i].name,stud[i].num,stud[i].age,stud[i].addr); } }
fread.c
#include <stdio.h> #define SIZE 2 struct student_type { char name[10]; int num; int age; char addr[10]; }stud[SIZE]; void read() { FILE *fp; int i; if((fp=fopen("stu_list","rb"))==NULL) { printf("cant open the file"); exit(0); } for(i=0;i<SIZE;i++) { if(fread(&stud[i],sizeof(struct student_type),1,fp)!=1) printf("file write error\n"); } fclose(fp); } main() { int i; read(); for(i=0;i<SIZE;i++) { printf("%s,%d,%d,%s",stud[i].name,stud[i].num,stud[i].age,stud[i].addr); printf("\n"); } }
到此,關于“C/C++文件的操作函數介紹”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。