版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
會計(jì)學(xué)1C語言文件中數(shù)據(jù)的訪問與存儲6.1文件的概念和分類P192按文件的內(nèi)容分:程序文件和數(shù)據(jù)文件按文件中數(shù)據(jù)的組織形式分:文本文件和二進(jìn)制文件返回第1頁/共54頁6.1文件的概念和分類P192如果要訪問文件中的數(shù)據(jù)或向文件中存儲數(shù)據(jù),都要以文件名為標(biāo)識。僅介紹文本文件中數(shù)據(jù)的讀寫方法。返回第2頁/共54頁6.2文件中數(shù)據(jù)的讀寫步驟P192(1)打開文件無論對文件進(jìn)行讀還是寫操作,都需要先打開文件,打開文件用fopen函數(shù)。(2)讀寫文件寫就是將內(nèi)存中的數(shù)據(jù)存到文件中去。主要介紹fscanf和fprintf函數(shù)。(3)關(guān)閉文件當(dāng)文件不再使用時,需將其關(guān)閉。關(guān)閉文件用fclose函數(shù)。返回第3頁/共54頁6.3.1向文本文件中寫數(shù)據(jù)6.3.2從已有的文本文件中讀數(shù)據(jù)6.3.3文本文件中對數(shù)據(jù)的讀寫操作6.3文本文件中數(shù)據(jù)的讀寫操作P192返回第4頁/共54頁6.3.1向文本文件中寫數(shù)據(jù)P192永久性地存放數(shù)據(jù),如存儲測量數(shù)據(jù)結(jié)果、學(xué)生成績存檔等,在C語言中用文件。可以用fprintf函數(shù)向文本文件中寫數(shù)據(jù)。問題的提出第5頁/共54頁【實(shí)例6-1】改寫實(shí)例1-1。編寫程序,將如圖1.2所示的問候語寫到d盤下c文件夾中的“f1.txt”文件中。任務(wù)與分析6.3.1向文本文件中寫數(shù)據(jù)P192第6頁/共54頁操作步驟#include<stdio.h>main(){定義文件指針fp
打開(或建立)d盤c文件夾中的“f1.txt”文件將問候語寫入“f1.txt”文件關(guān)閉文件}FILE*fp;fp=fopen("d:\\c\\f1.txt","w");fprintf(fp,"<-CProgramming->\n");fprintf(fp,"<>\n");fprintf(fp,"<Howdoyoudo?>\n");fprintf(fp,"<>\n");fprintf(fp,"<Nicetomeetyou!>\n");fprintf(fp,"<>\n");fprintf(fp,"<---Goodluck!--->\n");fclose(fp);第7頁/共54頁【實(shí)例6-2】編寫程序,用人機(jī)對話的形式隨機(jī)產(chǎn)生3道100以內(nèi)加法題,并將題目和用戶輸入的答案寫到d盤c文件夾中的“f2.txt”文件中。P194第8頁/共54頁操作步驟#include<stdio.h>#include<time.h>#include<stdlib.h>main(){定義整型變量a、b、c和i
定義文件指針fpinta,b,c,i;FILE*fp;第9頁/共54頁操作步驟
打開d盤c文件夾中的“f2.txt”文件隨機(jī)產(chǎn)生三個題目fp=fopen("d:\\c\\f2.txt","w");if(fp==NULL){printf("Cannotopenthefile.\n");exit(0);}srand(time(0));for(i=1;i<=3;i++){a=rand()%100;b=rand()%100;文件打開失敗第10頁/共54頁操作步驟
等待鍵盤輸入答案將題目和答案存入“f2.txt”文件關(guān)閉文件}fprintf(fp,"(%d)%d+%d=%d\n",i,a,b,c);}fclose(fp);printf("第%d題:%d+%d=",i,a,b);scanf("%d",&c);形式接近第11頁/共54頁【實(shí)例6-3】編寫程序,將英漢對照表寫到當(dāng)前文件夾中的“f3.txt”文件中。P195第12頁/共54頁操作步驟#include<stdio.h>#include<stdlib.h>structlist {定義存放中文單詞的成員定義存放英文單詞的成員};main(){定義名為list的結(jié)構(gòu)體類型數(shù)組a并初始化定義循環(huán)變量i定義文件指針fp
打開當(dāng)前文件夾中的“f3.txt”文件將結(jié)構(gòu)體數(shù)組a中的數(shù)據(jù)寫入“f3.txt”文件關(guān)閉文件}charcn[10];charen[10];既清晰又易讀取第13頁/共54頁操作步驟#include<stdio.h>#include<stdlib.h>structlist {定義存放中文單詞的成員定義存放英文單詞的成員};main(){定義名為list的結(jié)構(gòu)體類型數(shù)組a并初始化定義循環(huán)變量i定義文件指針fp
打開當(dāng)前文件夾中的“f3.txt”文件將結(jié)構(gòu)體數(shù)組a中的數(shù)據(jù)寫入“f3.txt”文件關(guān)閉文件}main(){structlista[5]={"中國","China","女孩","girl","男孩","boy","人","man","一","one"};inti;FILE*fp; fp=fopen("f3.txt","w");if(fp==NULL){printf("Cannotopenthefile.\n");exit(0);}for(i=0;i<5;i++)
fprintf(fp,"%15s%15s\n",a[i].cn,a[i].en);
fclose(fp);}相對路徑最好提供寬度第14頁/共54頁【實(shí)例6-4】編寫程序,向已有的英漢對照表(實(shí)例6-3中建立的文件“f3.txt”)最后,添加新的單詞。P197第15頁/共54頁操作步驟#include<stdlib.h>structlist {定義存放中文單詞的成員定義存放英文單詞的成員};main(){定義名為list的結(jié)構(gòu)體類型變量w
定義文件指針fp
打開當(dāng)前文件夾中的“f3.txt”文件輸入要添加的單詞將添加的單詞寫入“f3.txt”文件關(guān)閉文件}charcn[10];charen[10];structlistw;FILE*fp;gets();gets(w.en);fprintf(fp,"%15s%15s\n",,w.en);fp=fopen("f3.txt","a");if(fp==NULL){……}fclose(fp);第16頁/共54頁打開文件的一般形式:
文件指針名=fopen("文件名","打開方式");
歸納分析打
開方
式功
能
文本
二進(jìn)制
"r""rb"僅為讀打開已有文件"w""wb"僅為寫打開"a""ab"為追加打開第17頁/共54頁判斷文件打開是否成功:if(文件指針名==NULL){printf("Cannotopenthefile.\n");exit(0);}歸納分析關(guān)閉文件的一般形式:
fclose(文件指針);
第18頁/共54頁fprintf函數(shù)的一般形式:
fprintf(文件指針名,"一串字符");或
fprintf(文件指針名,"格式控制字符串",
輸出項(xiàng)表);歸納分析第19頁/共54頁動手練習(xí)6-1編寫程序,從鍵盤輸入3個學(xué)生的信息(包括學(xué)號,姓名,性別,成績),并存入d盤c文件夾中的“stu.txt”文件中。P200編寫程序,向練習(xí)6-1中已建立的“stu.txt”文件中添加2個新的學(xué)生信息,信息從鍵盤輸入。6-2第20頁/共54頁6.3.2從已有的文本文件中讀數(shù)據(jù)P200在日常生活中經(jīng)常需要訪問已有文件中的數(shù)據(jù)做相應(yīng)處理,如分析測量數(shù)據(jù)、統(tǒng)計(jì)學(xué)生成績等。在C語言中可以用fscanf函數(shù)從文本文件中讀取數(shù)據(jù)。問題的提出第21頁/共54頁【實(shí)例6-5】編寫程序,從實(shí)例6-2建立的文件“f2.txt”中讀取所有題目和答案,并顯示在屏幕上。任務(wù)與分析6.3.2從已有的文本文件中讀數(shù)據(jù)P200第22頁/共54頁操作步驟#include<stdio.h>#include<stdlib.h>main(){定義整型變量a、b、c、k和i
定義文件指針fp
打開d盤c文件夾中的“f2.txt”文件從“f2.txt”文件中讀取題目和答案將題目和答案顯示在屏幕上關(guān)閉文件}inta,b,c,k,i;FILE*fp;if(fp==NULL){……}fp=fopen("d:\\c\\f2.txt","r");for(i=1;i<=3;i++){fscanf(fp,"(%d)%d+%d=%d\n",&k,&a,&b,&c);printf("---%d---%d+%d=%d\n",k,a,b,c); }fclose(fp);第23頁/共54頁【實(shí)例6-6】編寫程序,從實(shí)例6-3建立的文件“f3.txt”中讀取所有內(nèi)容,并顯示在屏幕上。P201第24頁/共54頁操作步驟#include<stdio.h>#include<stdlib.h>structlist {定義存放中文單詞的成員定義存放英文單詞的成員};charcn[10];charen[10];第25頁/共54頁操作步驟main(){定義循環(huán)變量i
定義名為list的結(jié)構(gòu)體類型變量w
定義文件指針fp
打開d盤c文件夾中的“f3.txt”文件從“f3.txt”文件中讀取單詞將單詞顯示在屏幕上關(guān)閉文件}inti;structlistw;FILE*fp;if(fp==NULL){……}fp=fopen("d:\\c\\f3.txt","r");for(i=1;i<=5;i++){fscanf(fp,"%15s%15s\n",,w.en);printf("%15s%15s\n",,w.en);}fclose(fp);對于長度不定的文件while(feof(fp)==0)第26頁/共54頁【實(shí)例6-7】編寫程序,輸入英文或中文單詞,根據(jù)英漢對照表文件“f3.txt”,在屏幕上顯示對應(yīng)的單詞。P203第27頁/共54頁操作步驟#include<stdio.h>#include<stdlib.h>#include<string.h>structlist {定義存放中文單詞的成員定義存放英文單詞的成員};charcn[10];charen[10];第28頁/共54頁操作步驟main(){定義名為list的結(jié)構(gòu)體類型變量w
定義文件指針fp
定義標(biāo)志變量s.flag
定義字符串變量str
打開d盤c文件夾中的“f3.txt”文件
structlistw;FILE*fp;ints,flag=0;charstr[20];fp=fopen("d:\\c\\f3.txt","r");if(fp==NULL){printf("Cannotopenthefile.\n");exit(0);}第29頁/共54頁操作步驟選擇是英漢還是漢英?輸入待查找的單詞printf("請選擇:\n英漢---1\n漢英---2\n");scanf("%d",&s);if(s==1){printf("請輸入要查找的英文單詞:\n");scanf("%s",str);}elseif(s==2){printf("請輸入要查找的中文:\n");scanf("%s",str);}第30頁/共54頁操作步驟
在“f3.txt”文件中查找對應(yīng)單詞輸出查找結(jié)果while(feof(fp)==0){fscanf(fp,"%15s%15s\n",,w.en);if(s==1&&strcmp(str,w.en)==0){flag=1;printf("%s:%s\n",w.en,);break;}if(s==2&&strcmp(str,)==0){flag=1;printf("%s:%s\n",,w.en);break;}}if(flag==0)printf("沒有查找到對應(yīng)的單詞");第31頁/共54頁操作步驟
關(guān)閉文件}fclose(fp);}第32頁/共54頁【實(shí)例6-8】用Windows中的記事本建立2個文件“f4.txt”和“f5.txt”,并編寫程序,將文件“f5.txt”中的數(shù)據(jù)合并到“f4.txt”文件中。P205第33頁/共54頁操作步驟用記事本在d盤c文件夾下建立文件“f4.txt”和“f5.txt”,文件中存放漢英對照表。
第34頁/共54頁操作步驟#include<stdio.h>#include<stdlib.h>structlist {定義存放中文單詞的成員定義存放英文單詞的成員};charcn[10];charen[10];第35頁/共54頁操作步驟main(){定義名為list的結(jié)構(gòu)體類型變量w
定義文件指針fp1,fp2
打開d盤c文件夾中的“f4.txt”文件打開d盤c文件夾中的“f5.txt”文件structlistw; FILE*fp1,*fp2;fp1=fopen("d:\\c\\f4.txt","a");if(fp1==NULL){printf("Cannotopenthefile.\n");exit(0);}fp2=fopen("d:\\c\\f5.txt","r");if(fp2==NULL){printf("Cannotopenthefile.\n");exit(0);}第36頁/共54頁操作步驟
從“f5.txt”文件中讀取數(shù)據(jù)將數(shù)據(jù)追加到“f4.txt”文件關(guān)閉兩個文件}while(feof(fp2)==0){fscanf(fp2,"%10s%15s\n",,w.en);fprintf(fp1,"%10s%15s\n",,w.en);} fclose(fp1);fclose(fp2);第37頁/共54頁fscanf函數(shù)的一般形式:
fscanf(文件指針名,"格式控制字符串",
輸入項(xiàng)表);歸納分析讀取文件中所有數(shù)據(jù):
while(feof(文件指針)==0){讀數(shù)據(jù)
}
第38頁/共54頁動手練習(xí)6-3編寫程序,輸入學(xué)號,從練習(xí)6-1已建立的“stu.txt”文件中查找對應(yīng)的學(xué)生(若“stu.txt”文件不存在,先建立),并輸出該學(xué)生的全部信息(包括學(xué)號,姓名,性別,成績)。P207第39頁/共54頁動手練習(xí)6-4P207用Windows中的記事本建立1個文件“stu1.txt”,文件中存儲新入學(xué)的學(xué)生信息,與“stu.txt”文件格式一致。編寫程序,將文件“stu1.txt”中的數(shù)據(jù)合并到“stu.txt”中。第40頁/共54頁6.3.3文本文件中對數(shù)據(jù)的讀寫操作P207在日常生活中經(jīng)常需要讀取已有文件中的數(shù)據(jù)進(jìn)行處理,然后再存入文件中。如對學(xué)生成績排序、考試系統(tǒng)等。在C語言中,需要綜合運(yùn)用函數(shù)fscanf、fprintf以及feof等。問題的提出第41頁/共54頁【實(shí)例6-9】編寫程序,從實(shí)例6-2建立的文件“f2.txt”中修改第1題的錯誤答案。任務(wù)與分析6.3.3文本文件中對數(shù)據(jù)的讀寫操作P207第42頁/共54頁操作步驟#include<stdio.h>#include<stdlib.h>main(){定義整型數(shù)組a、b、c、k
定義循環(huán)控制變量i、j
定義文件指針fp
打開d盤c文件夾中的“f2.txt”文件inta[50],b[50],c[50],k[50],i,j;FILE*fp; fp=fopen("d:\\c\\f2.txt","r");if(fp==NULL){printf("Cannotopenthefile.\n");exit(0);}第43頁/共54頁操作步驟從“f2.txt”文件中讀取數(shù)據(jù)到數(shù)組a、b、c、k中關(guān)閉文件修改第1題答案i=0;while(feof(fp)==0){
fscanf(fp,"(%d)%d+%d=%d\n",
&k[i],&a[i],&b[i],&c[i]);i++;}fclose(fp);printf("--%d---%d+%d=\n",k[0],a[0],b[0]);printf("請輸入正確答案:");scanf("%d",&c[0]);第44頁/共54頁操作步驟
重新打開“f2.txt”文件將修改后的新數(shù)據(jù)寫入該文件關(guān)閉文件}fp=fopen("d:\\c\\f2.txt","w");if(fp==NULL){printf("Cannotopenthefile.\n");exit(0);}for(j=0;j<i;j++)fprintf(fp,"(%d)%d+%d=%d\n",k[j],a[j],b[j],c[j]);printf("修改完畢\n"); fclose(fp)0)第45頁/共54頁【實(shí)例6-10】編寫程序,將已建立好的文件“f2.txt”中數(shù)據(jù)全部復(fù)制到新文件“f2_new.txt”中。P209第46頁/共54頁操作步驟#include<stdio.h>#include<stdlib.h>main(){定義整型變量a、b、c、k
定義文件指針fp1、fp2
打開d盤c文件夾中“f2.txt”、“f2_new.txt
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《血液凈化質(zhì)量控制》課件
- 工會續(xù)簽合同的領(lǐng)導(dǎo)評語
- 《外部形態(tài)頭部》課件2
- 2025年甘肅道路客貨運(yùn)輸從業(yè)資格證b2考試題庫
- 2025年銀川貨運(yùn)從業(yè)資格證題目答案
- 《外出安全知識》課件
- 《食品安全風(fēng)險監(jiān)測》課件
- 鐵路運(yùn)輸勞動防護(hù)用品管理要求
- 酒店式公寓外墻修繕合同
- 保險公司業(yè)務(wù)員聘用合同樣本
- 大學(xué)課件-機(jī)電傳動控制(完整)
- 2023-2024學(xué)年山東省德州市九年級上學(xué)期期末化學(xué)質(zhì)量檢測試題(含答案)
- 童年試題附答案
- 端午節(jié)食品購銷合同
- 江西旅游經(jīng)濟(jì)發(fā)展調(diào)查報告
- 鋼筋滾絲機(jī)安全操作規(guī)程
- 如愿三聲部合唱簡譜
- 山東春季高考土建專業(yè)2023年高考題
- 《創(chuàng)業(yè)指導(dǎo)》(0.5學(xué)分)學(xué)習(xí)通課后章節(jié)答案期末考試題庫2023年
- 輸血科三基知識試題+參考答案
- 民警考察材料范文(通用4篇)
評論
0/150
提交評論