磁盘文件操作(IO系统)课件.ppt
ch=fgetc(fp);/*從檔讀取字元*/while(ch!=EOF){putchar(ch);ch=fgetc(fp);/*從檔讀取字元*/}fclose(fp); /*關閉檔*/return0;}這個程式的結構與上一個程式基本相同:打開檔,讀檔,關閉檔。程式中用了一個while迴圈語句讀字元:?while(ch!=EOF){}?作用是,每讀一個字元都要檢查,是否讀到檔尾。13.3.2檔尾測試函數、錯誤測試函數和文件頭定位函數為配合檔的讀寫操作,還要用到一些其他有關函數。這裏主要介紹三個函數。1.檔尾測試函數feof()2.檔錯誤測試函數ferror()例13.3.3應用函數ferror和feof()的例子。程式的功能是複製任意類型的檔,即讀入一個檔f1,然後,將其寫入另一個檔f2。整個程式分為以下幾個部分:(1)打開檔f1(“rb”模式);(2)打開檔f2(“wb”模式);(3)讀檔f1;(4)寫檔f2;(5)關閉兩個被打開的檔。程式的流程如圖13.2所示。圖13.2例13.3.3複製檔程式的流程圖程式如下:?#includestdio.hmain(){FILE*fin,*fout; /*定義檔指針*/charch;?if((fin=fopen(f1,rb))==NULL) /*rb模式打開檔f1*/{printf(cannotopensourcefile\n);exit(1);}if((fout=fopen(f2,wb))==NULL) /*wb模式打開檔f2*/{printf(cannotopendestinationfile\n);exit(1);}while(!feof(fin)) /*判斷檔尾*/{ch=getc(fin); /*讀數據*/if(ferror(fin)) /*檢查錯誤*/{printf(erroereadingfile.\n);break;}fputc(ch,fout);/*複製(寫)數據*/if(ferror(fout))/*檢查錯誤*/{printf(errorwritingfile.\n);break;}}fclose(fin); /*關閉檔*/fclose(fout); /*關閉檔*/return0;}3.檔頭定位函數rewind()13.3.3字串檔讀寫函數1.寫字符串檔函數fputs()2.讀字串檔函數fgets()例13.3.4將一字串寫入檔“strfile.dat”,然後,從檔讀出並顯示到螢幕。程式如下:#includestdio.hmain(){charstr[80]=I/Osystem.;charstr1[80];FILE*fp; /*定義檔指針*/?if((fp=fopen(strfile.dat,w))==NULL) /*打開檔,模式寫*/{