版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第10章文件理解C語言文件的基本概念和原理理解文件讀寫的一般流程掌握使用文件實現(xiàn)數(shù)據(jù)存取的方法本章目標例子1:給祖國送祝福10.1一個簡單的文件操作程序#include<stdio.h>#include<stdlib.h>#include<string.h>voidInput(){FILE*fpOut;charstrLine[200];fpOut=fopen("wishes.txt","w");if(fpOut==NULL){printf("無法創(chuàng)建文件!\n");exit(0);}while(true){printf(“請輸入您的祝福語:\n”);scanf(“%s”,strLine);
if(!strcmp(strLine,“完畢”))break;
fputs(strLine,fpOut);
fputc('\n',fpOut);
memset(strLine,0,sizeof(strLine));
}
fclose(fpOut);
}int
main(){
printf(“同學們的祝福語開始錄入\n”);Input();
return
0;
}
文件:文件是指保存在磁盤上的一組數(shù)據(jù)的有序集合。文件名:表示文件的數(shù)據(jù)集合有一個名稱,叫做文件名。10.2文件的基本概念和原理(1)
文件讀寫概念硬盤寫讀保存在變量和數(shù)組中的數(shù)據(jù)是暫時的,關機會丟失數(shù)據(jù)保存到文件可實現(xiàn)永久存儲,關機也不會丟失內存10.2文件的基本概念和原理(2)
文本文件和二進制文件的區(qū)別文本文件數(shù)據(jù)被作為字符,并以字符的二進制編碼形式保存。1234‘1’‘2’‘3’‘4’整數(shù)把四位整數(shù)轉為4個字符,并將其對應的ACSII碼寫入文件中00110001001100100011001100110100二進制文件以數(shù)據(jù)在內存中的二進制形式保存。1234整數(shù)0000010011010010把值1234的二進制編碼寫入文件中內存磁盤10.2文件的基本概念和原理(3)
文件讀寫一般流打開文件讀寫文件關閉文件10.3文本文件的讀寫(1)
文本文件的讀寫程序模板intmain(){……
//Step1:以寫模式打開文件FILE*pfOut=fopen(…,“w”);
//Step2:主循環(huán)——將數(shù)據(jù)寫到文件while(…){//將數(shù)據(jù)轉化為字符,并寫到文件中
//“寫”函數(shù)有:fprintf()、fputc()、fputs()}
//Step3:關閉文件,即fclose(pfOut);}intmain(){……
//Step1:以讀模式打開文件FILE*pfIn=fopen(…,“r”);
//Step2:主循環(huán)——將數(shù)據(jù)寫到文件while(…){//從文件中讀取字符或字符串//轉換類型,并賦值給對應的變量
//“讀”函數(shù)有:fscanf()、fgetc()、fgets()}
//Step3:關閉文件,即fclose(pfIn);}寫文件讀文件寫函數(shù):intfprintf(FILE*fp,格式字符串,輸出項列表);intfputc(intc,FILE*fp);intfputs(char*str,FILE*fp)讀函數(shù):intfscanf(FILE*fp,格式字符串,輸入項地址列表);intfgetc(FILE*fp);char*fgets(char*str,intn,FILE*fp)(2)文本文件的讀寫函數(shù)10.3文本文件的讀寫10.3文本文件的讀寫“寫”文件的代碼:#include<stdio.h>intmain(){intiNo;charstrName[32]={0};intiScores[3]={0};FILE*pfOut=NULL;inti=1;pfOut=fopen("I:\\devc_projs\\teaching\\stu_scores.txt","w");if(!pfOut){printf("打開文件出錯!\n");return-1;} while(1){printf("請輸入第%d位學生信息(學號、姓名、高數(shù)、英語、C語言):\n",i++);scanf("%d%s%d%d%d",&iNo,strName,&iScores[0],&iScores[1],&iScores[2]);if(iNo==-1)break; fprintf(pfOut,"%d%s%d%d%d\n",iNo,strName,iScores[0],iScores[1],iScores[2]);}fclose(pfOut);return0;}10.3文本文件的讀寫“讀”文件的代碼:#include<stdio.h>intmain(){intiNo;charstrName[32]={0};intiScores[3]={0};FILE*pfIn=NULL;inti=1;intiTotalScore=0;pfIn=fopen("I:\\devc_projs\\teaching\\stu_scores.txt","r");if(!pfIn){printf("打開文件出錯!\n");return-1;}printf("學號姓名高數(shù)英語C語言總分\n");while(!feof(pfIn)){fscanf(pfIn,"%d%s%d%d%d\n",&iNo,strName,&iScores[0],&iScores[1],&iScores[2]);iTotalScore=iScores[0]+iScores[1]+iScores[2];printf("%d,%s,%d,%d,%d,%d\n",iNo,strName,iScores[0],iScores[1],iScores[2],iTotalScore);} 10.4二進制文件的讀寫(1)二進制文件的讀寫程序模板intmain(){……
//Step1:以寫模式打開文件FILE*pfOut=fopen(…,“w”);
//Step2:主循環(huán)——將數(shù)據(jù)寫到文件while(…){//直接將數(shù)據(jù)原原本本寫到文件中
//“寫”函數(shù)為:fwrite()}
//Step3:關閉文件,即fclose(pfOut);}intmain(){……
//Step1:以讀模式打開文件FILE*pfIn=fopen(…,“r”);
//Step2:主循環(huán)——從文件讀數(shù)據(jù)while(…){//從文件中直接把數(shù)據(jù)讀取到對應的變量
//“讀”函數(shù)有:fread()}
//Step3:關閉文件,即fclose(pfIn);}寫文件讀文件寫函數(shù):intfwrite(void*buffer,unsignedsize,unsignedcount,FILE*fp)讀函數(shù):intfread(void*buffer,unsignedsize,unsignedcount,FILE*fp)(2)二進制文件的讀寫函數(shù)10.4二進制文件的讀寫示例:intiValue=10;doubledValue=12.5;doubledArr[3]={1.5,3.0,4.5};/*sizeof(iValue)可以用sizeof(int)代替*/fwrite(&iValue,sizeof(iValue),1,fp);/*將dValue變量12.5寫到10之后*/fwrite(&dValue,sizeof(double),1,fp);/*將dArr的第一個元素1.5寫到12.5之后*/fwrite(&dArr[0],sizeof(double),1,fp);fwrite(&dArr[1],sizeof(double),1,fp);fwrite(&dArr[2],sizeof(double),1,fp);示例:intiValue;doubledValue;doubledArr[3];/*從當前位置讀入sizeof(iValue)個字節(jié),存儲到iValue*/fread(&iValue,sizeof(iValue),1,fp);/*繼續(xù)讀入sizeof(double)個字節(jié)的數(shù)據(jù),存儲到dValue*/fread(&dValue,sizeof(double),1,fp);/*再繼續(xù)讀入sizeof(double)個字節(jié)的數(shù)據(jù),存儲到dArr[0]*/fread(&dArr[0],sizeof(double),1,fp);fread(&dArr[1],sizeof(double),1,fp);/*同上*/fread(&dArr[2],sizeof(double),1,fp);/*同上*/10.4二進制文件的讀寫“寫”文件的代碼#include<stdio.h>intmain(){intiNo;charstrName[32]={0};intiScores[3]={0};FILE*pfOut=NULL;inti=1;pfOut=fopen("I:\\devc_projs\\teaching\\stu_scores.dat","wb");if(!pfOut){printf("打開文件出錯!\n");return-1;}while(1){printf("請輸入第%d位學生的信息(學號、姓名、高數(shù)、英語、C語言):\n",i++);
scanf("%d%s%d%d%d",&iNo,strName,&iScores[0],&iScores[1],&iScores[2]); if(iNo==-1)break; fwrite(&iNo,sizeof(iNo),1,pfOut);fwrite(strName,sizeof(strName),1,pfOut);fwrite(&iScores[0],sizeof(iScores[0]),1,pfOut);fwrite(&iScores[1],sizeof(iScores[1]),1,pfOut);fwrite(&iScores[2],sizeof(iScores[2]),1,pfOut);} fclose(pfOut);return0;}10.4二進制文件的讀寫“讀”文件的代碼#include<stdio.h>intmain(){intiNo;charstrName[32]={0};intiScores[3]={0};FILE*pfIn=NULL;inti=1;intiTotalScore=0;pfIn=fopen("I:\\devc_projs\\teaching\\stu_scores.dat","rb");if(!pfIn){printf("打開文件出錯!\n");return-1;}printf("學號姓名高數(shù)英語C語言總分\n");while(!feof(pfIn)){fread(&iNo,sizeof(iNo),1,pfIn);fread(strName,sizeof(strName),1,pfIn);fread(&iScores[0],sizeof(iScores[0]),1,pfIn);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度內衣設計版權授權合同
- 個人勞務合同樣本簡易版3
- 會員卡租賃合同
- 2025年婚姻咨詢擔保合同
- 2025年投資信用風險評估合同
- 2025年度個人股權質押債務重組合同(優(yōu)化版)4篇
- 2025年度個人購房合同綠化養(yǎng)護服務協(xié)議
- 2025年個人對企業(yè)提供出口貿易融資借款合同4篇
- 2025年度個人住宅水電安裝施工合同范本4篇
- 2025年金融租賃產品委托借貸居間合同范本3篇
- 油氣行業(yè)人才需求預測-洞察分析
- DB34∕T 4010-2021 水利工程外觀質量評定規(guī)程
- 2024年內蒙古中考英語試卷五套合卷附答案
- 2024年電工(高級)證考試題庫及答案
- 華為集團干部管理
- 圖書館前臺接待工作總結
- 衛(wèi)生院藥品管理制度
- 理論力學智慧樹知到期末考試答案章節(jié)答案2024年中國石油大學(華東)
- 2024老年人靜脈血栓栓塞癥防治中國專家共識(完整版)
- 四年級上冊脫式計算100題及答案
- 上海市12校2023-2024學年高考生物一模試卷含解析
評論
0/150
提交評論