c語言從入門到精通第十二章文件處理_第1頁
c語言從入門到精通第十二章文件處理_第2頁
c語言從入門到精通第十二章文件處理_第3頁
c語言從入門到精通第十二章文件處理_第4頁
c語言從入門到精通第十二章文件處理_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

文件澳門

http://qzq.cc/

皇冠/游戲

http://tid.cc

紅寶石

/

利來

/關(guān)閉打開的所有文件

在程序中打開三個(gè)磁盤上已有的文件,讀取文件中的內(nèi)容并顯示在屏幕上,要求調(diào)用fcloseall()函數(shù)一次關(guān)閉打開的三個(gè)文件。(范例位置:光盤\TM\fl\12\1)#include<stdio.h>main(){FILE*fp1,*fp2,*fp3; /*定義文件類型指針fp1、fp2、fp3*/charfile1[20],file2[20],file3[20],ch;intfile_number; /*關(guān)閉的文件數(shù)目*/printf("pleaseinputfile1:");scanf("%s",file1); /*輸入文件1的路徑及名稱*/printf("file1:\n");if((fp1=fopen(file1,"rb"))!=NULL){ch=fgetc(fp1); /*讀取文件1中內(nèi)容*/while(ch!=EOF) /*判斷字符是否為文件結(jié)尾*/{putchar(ch); /*輸出字符*/ch=fgetc(fp1); /*讀取字符*/}}else{printf("cannotopen!"); /*若文件未打開輸出提示信息*/exit(1);}

關(guān)閉打開的所有文件printf("\npleaseinputfile2:");scanf("%s",file2); /*輸入文件2的路徑及名稱*/printf("file2:\n");if((fp2=fopen(file2,"rb"))!=NULL)

{ch=fgetc(fp2); /*讀取文件2中內(nèi)容*/while(ch!=EOF){putchar(ch);ch=fgetc(fp2);}}else{printf("cannotopen!");exit(1);}printf("\npleaseinputfile3:");scanf("%s",file3); /*輸入文件3的路徑及名稱*/printf("file3:\n");if((fp3=fopen(file3,"rb"))!=NULL){ch=fgetc(fp3); /*讀取文件3中內(nèi)容*/while(ch!=EOF){putchar(ch);ch=fgetc(fp3);}關(guān)閉打開的所有文件

}else{printf("cannotopen!");exit(1);}/*調(diào)用fcloseall()函數(shù)關(guān)閉打開的文件,將返回值賦給file_number*/file_number=fcloseall();printf("\n%dfilescolsed",file_number);return0;}程序中用到fcloseall()函數(shù),具體使用說明如下:intfcloseall(void)該函數(shù)的作用是一次關(guān)閉所有被打開的文件。如果函數(shù)執(zhí)行成功,它將返回成功關(guān)閉文件的數(shù)目,如果出錯(cuò),則返回EOF常量。該函數(shù)原型在stdio.h中。同時(shí)顯示兩個(gè)文件內(nèi)容編程實(shí)現(xiàn)將兩個(gè)不同文件中的內(nèi)容在屏幕中的指定位置顯示出來。(范例位置:光盤\TM\fl\12\2)#include<stdio.h>#include<conio.h>main(){FILE*fp1,*fp2; /*定義兩個(gè)指向FILE類型結(jié)構(gòu)體的指針變量*/charfilename1[50],filename2[50],a; /*定義數(shù)組和變量為字符型*/printf("pleaseinputfilename1:\n");scanf("%s",filename1); /*輸入第一個(gè)文件所在路徑及名稱*/printf("pleaseinputfilename2\n");scanf("%s",filename2); /*輸入第二個(gè)文件所在路徑及名稱*/fp1=fopen(filename1,"r"); /*以只讀方式打開輸入的第一個(gè)文件*/fp2=fopen(filename2,"r"); /*以只讀方式打開輸入的第二個(gè)文件*/gotoxy(3,5); /*將光標(biāo)定位*/printf("file1:\n");a=fgetc(fp1);while(!feof(fp1)){printf("%c",a); /*輸出第一個(gè)文件中的內(nèi)容*/a=fgetc(fp1);}gotoxy(3,13); /*將光標(biāo)定位*/printf("file2:\n");a=fgetc(fp2);

同時(shí)顯示兩個(gè)文件內(nèi)容while(!feof(fp2)){printf("%c",a); /*輸出第二個(gè)文件中的內(nèi)容*/a=fgetc(fp2);}fclose(fp1); /*關(guān)閉第一個(gè)文件*/fclose(fp2); /*關(guān)閉第二個(gè)文件*/return;}以行為單位讀寫文件從鍵盤中輸入字符串“祝你好運(yùn),我的朋友!”要求將字符串內(nèi)容輸出到磁盤文件中,再從磁盤文件中讀取字符串到數(shù)組中,最終將其輸出在屏幕上。(范例位置:光盤\TM\fl\12\3)#include<stdio.h>main(){FILE*fp; /*定義一個(gè)指向FILE類型結(jié)構(gòu)體的指針變量*/charstr[100],s[100],filename[50]; /*定義數(shù)組為字符型*/printf("pleaseinputstring!\n");gets(str); /*獲得字符串*/printf("pleaseinputfilename:\n");scanf("%s",filename); /*輸入文件所在路徑及名稱*/if((fp=fopen(filename,"wb"))!=NULL)/*以只寫方式打開指定文件*/{fputs(str,fp); /*把字符數(shù)組str中的字符串輸出到fp指向的文件*/fclose(fp);}else{printf("cannotopen!");exit(0);}if((fp=fopen(filename,"rb"))!=NULL){while(fgets(s,sizeof(s),fp))/*從fp所指的文件中讀入字符串存入s中*/printf("%s",s);/*將字符串輸出*/fclose(fp); /*關(guān)閉文件*/}}重命名文件編程實(shí)現(xiàn)重命名文件,具體要求如下:從鍵盤中輸入要重命名的文件的路徑及名稱,文件打開成功后輸入新的路徑及名稱。(范例位置:光盤\TM\fl\12\4)#include<stdio.h>voidmain(){FILE*fp; /*定義一個(gè)指向FILE類型結(jié)構(gòu)體的指針變量*/charfilename1[20],filename2[20]; /*定義數(shù)組為字符型*/printf("Pleaseinputthefile'snamewhichdoyouwanttochange:\n");scanf("%s",filename1); /*輸入要重命名的文件所在的路徑及名稱*/if((fp=fopen(filename1,"r"))==NULL) /*以只讀方式打開指定文件*/{printf("Cannotopenthefile%s\n",filename1);exit(0);}else{printf("Opensuccessful!");fclose(fp); /*關(guān)閉文件*/printf("Pleaseinputnewname!\n");scanf("%s",filename2); /*輸入新的文件路徑及名稱*/if(rename(filename1,filename2)==0) /*調(diào)用rename函數(shù)進(jìn)行重命名并判斷是否成功*/printf("Renamethefile%ssucceed!\n",filename1);elseprintf("Cannotrenamethefile%s!\n",filename1);}}重命名文件合并兩個(gè)文件信息有兩個(gè)文本文檔,第一個(gè)文本文檔的內(nèi)容是:“書中自有黃金屋,書中自有顏如玉?!?,第二個(gè)文本文檔的內(nèi)容是:“不登高山,不知天之高也;不臨深谷,不知地之厚也?!本幊虒?shí)現(xiàn)合并兩文件信息,即將文檔二的內(nèi)容合并到文檔一內(nèi)容的后面。(范例位置:光盤\TM\fl\12\5)#include<stdio.h>main(){charch,filename1[50],filename2[50]; /*數(shù)組和變量的數(shù)據(jù)類型為字符型*/FILE*fp1,*fp2; /*定義兩個(gè)指向FILE類型結(jié)構(gòu)體的指針變量*/printf("Pleaseinputfilename1:\n");scanf("%s",filename1); /*輸入文件所在路徑及名稱*/if((fp1=fopen(filename1,"a+"))==NULL) /*以讀寫方式打開指定文件*/{printf("Cannotopen\n");exit(0);}printf("File1:\n");ch=fgetc(fp1);while(ch!=EOF){putchar(ch); /*將文件1中的內(nèi)容輸出*/ch=fgetc(fp1);}printf("\nPleaseinputfilename2:\n");scanf("%s",filename2); /*輸入文件所在路徑及名稱*/if((fp2=fopen(filename2,"r"))==NULL) /*以只讀方式打開指定文件*/{printf("Cannotopen\n");exit(0);}合并兩個(gè)文件信息

printf("File2:\n");ch=fgetc(fp2);while(ch!=EOF){putchar(ch); /*將文件2中的內(nèi)容輸出*/ch=fgetc(fp2);}fseek(fp2,0L,0); /*將文件2中的位置指針移到文件開始處*/ch=fgetc(fp2);while(!feof(fp2)){fputc(ch,fp1); /*將文件2中的內(nèi)容輸出到文件1中*/ch=fgetc(fp2); /*繼續(xù)讀取文件2中的內(nèi)容*/}fclose(fp1); /*關(guān)閉文件1*/fclose(fp2); /*關(guān)閉文件2*/}錯(cuò)誤處理編程實(shí)現(xiàn)將文件中的制表符換成恰當(dāng)數(shù)目的空格,要求每次讀寫操作后都調(diào)用ferror()函數(shù)檢查錯(cuò)誤。(范例位置:光盤\TM\fl\12\6)#include<stdio.h>#include<stdlib.h>voiderror(inte) /*自定義error函數(shù)判斷出錯(cuò)的性質(zhì)*/{if(e==0)printf("Inputerror\n");elseprintf("Outputerror\n");exit(1); /*跳出程序*/}main(){FILE*in,*out; /*第一兩個(gè)文件類型指針in和out*/inttab,i;charch,filename1[30],filename2[30];printf("Pleaseinputthefilename1:");scanf("%s",filename1); /*輸入文件路徑及名稱*/printf("Pleaseinputthefilename2:");scanf("%s",filename2); /*輸入文件路徑及名稱*/if((in=fopen(filename1,"rb"))==NULL){printf("Cannotopenthefile%s。\n",filename1);exit(1);}if((out=fopen(filename2,"wb"))==NULL){printf("Cannotopenthefile%s。\n",filename2);exit(1);}

錯(cuò)誤處理tab=0;ch=fgetc(in); /*從指定的文件中讀取字符*/while(!feof(in)){if(ferror(in))error(0);if(ch=='\t'){for(i=tab;i<8;i++){putc('',out);if(ferror(out))error(1);}tab=0;}else{putc(ch,out);if(ferror(out))error(1);tab++;if(tab==8)tab=0;if(ch=='\n'||ch=='\r')tab=0;}ch=fgetc(in);}

fclose(in);fclose(out);}錯(cuò)誤處理文件分割編程實(shí)現(xiàn)將一個(gè)較大的文件分割成若干個(gè)較小的文件,要求分割成的文件不改變原有文件內(nèi)容。(范例位置:光盤\TM\fl\12\7)#include<stdio.h>#include<string.h>#include<stdlib.h>FILE*in,*out; /*定義兩個(gè)指向FILE類型結(jié)構(gòu)體的指針變量*/charfilename[50],ch,cfilename[50];voidspace() /*分隔文件函數(shù)*/{charext[6][6]={"a.txt","b.txt","c.txt","d.txt","e.txt","f.txt"}; /*分割出來的文件擴(kuò)展名*/unsignedlongintn=1,k,byte=0; /*定義變量類型為無符號的長整形變量*/unsignedintj=0,i=0;printf("Pleaseinputfilename:\n");scanf("%s",filename); /*輸入文件所在路徑及名稱*/strcpy(cfilename,filename); /*輸入文件所在路徑及名稱復(fù)制到cfilename中*/if((in=fopen(filename,"r"))==NULL) /*以只讀方式打開輸入文件*/文件分割{printf("Cannotopenfile\n");exit(0);}printf("Pleaseinputfilesizeafterspace(kb):\n");scanf("%d",&n); /*輸入分割后單個(gè)文件的大小*/n=n*1024;while(filename[j]!='.')j++;filename[j]='\0'; /*遇'.'時(shí),在該處加字符串結(jié)束符*/if((out=fopen(strcat(filename,ext[i]),"w"))==NULL) /*生成分割后文件所在路徑及名稱*/{printf("Cannotopenfile\n");exit(0);}fsee

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論