200822C阶段一文件
生活随笔
收集整理的這篇文章主要介紹了
200822C阶段一文件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
- 一、學習的知識點
- 文件
- 定義
- 文件的操作
- 文件相關的封裝函數
- 二、上課沒有聽懂或者沒有理解的地方
- 三、當天學習的收獲
- 四、作業的思路、不會的地方
- 五、其他需要反饋的問題
- 六、心得體會
一、學習的知識點
文件
定義
文件一般指存儲在外部介質(如磁盤磁帶)上數據的集合。操作系統是以文件為單位對數據進行管理的。從操作系統的角度看,每一個與主機相連的輸入輸出設備看作是一個文件。
文件的操作
在緩沖文件系統中,每個被使用的文件都要在內存中開辟一FILE類型的區,存放文件的有關信息。stdio.h 中定義了一個稱為 FILE 的結構.
FILE *fp; //文件指針指向一個結構fp=fopen("data.txt","r+"); //返回文件類型的指針//r+ 如果打開一個不存在的文件,返回NULL;打開一個存在的文件,打開成功不會新建//w+ 如果打開一個不存在的文件,建立一個新的文本文件;打開一個存在的文件,也會新建if(fp == NULL){文件打開失敗fp=fopen("data.txt","w+");}printf("文件打開成功");//將內存數據寫入到文件,成功返回寫入單元個數,失敗返回0,寫入后指針自動偏移res=fwrite(&menu[0],sizeof(MENUL_T),2,fp);//1.要寫的數據地址 2.寫入單元的大小 3.寫入的單元個數 4.寫入的文件指針fflush(fp); //刷新,將寫入的數據保存到文件中fseek(fp,2*sizeof(MENU_T),0);//指針偏移1.文件指針 2.偏移量 3.指針偏移0-從頭偏移 1-從當前位置 2-從尾巴rewind(fp); //文件指針定位到頭//從文件讀取數據到內存中,成功返回讀取的單元個數,失敗返回0,讀取后指針自動偏移res=fread(&menu[3],sizeof(MENU_T),1,fp); //讀出數據,從fp指向的文件讀取數據存入到user[1]//1.讀出數據要保存的地址 2.讀出單元的大小 3.讀出的單元數 4.要讀取的文件的指針fclose(fp);//關閉文件文件相關的封裝函數
//打開或新建一個文件 FILE *file_open(char *name) {//定義一個文件類型的指針,返回指針FILE *fp=NULL;fp=fopen(name,"rb+"); //r+:打開一個不存在的文件,返回NULL,打開成功返回文件指針if(fp == NULL){fopen(name,"wb+");//w+ 如果打開一個不存在的文件,建立一個新的文本文件;打開一個存在的文件,也會新建}return fp; }/* 函數功能:從文件里面讀取數據保存到鏈表中 函數參數:文件指針,服務每一塊數據單元的大小,(菜譜、員工、臺桌) */ void *File_read(FILE * fp,int size) {//創建鏈表LIST_T *head=NULL;void *data=NULL; //保存數據的地址head=List_Init();data=malloc(size);memset(data,0,size);//從文件讀取數據,不知道文件有多少數據,使用循環讀取while(fread(data,size,1,fp)){//存入鏈表List_Add(head,data);//重新開空間并初始化data=malloc(size);memset(data,0,size);}return head; }//將整條鏈表中的數據寫入文件 void File_write(FILE * fp,int size,LIST_T *head) {LIST_T *ptemp=head->pnext;rewind(fp);while(ptemp != NULL){fwrite(ptemp->pdata,size,1,fp);fflush(fp);ptemp=ptemp->pnext;} }二、上課沒有聽懂或者沒有理解的地方
無
三、當天學習的收獲
學會了使用文件永久保存數據
四、作業的思路、不會的地方
按上課講的思路寫
五、其他需要反饋的問題
無
六、心得體會
最近學了挺多新知識,要好好消化理解
總結
以上是生活随笔為你收集整理的200822C阶段一文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 200820C阶段一通用链表
- 下一篇: 200825C文件 复习