1 / 19

File ( 檔案處理 )

File ( 檔案處理 ). 學習目標 : 開檔、讀檔、更新檔與關閉檔案. 大綱. 檔案的觀念 檔案的處理方式 檔案的函數使用: fopen …. 檔案的觀念. 檔案儲存的方式可以分為兩種: 文字檔 以 ASCII 碼儲存 , 每個字元皆佔有 1 個位元組。 若將數值 182956 存在文字檔中,會當成 6 個字元來存檔. 以 ASCII 碼儲存. 二進位檔 以二進位的格式儲存,如影像檔或執行檔。 將整數 182956 以二進位的格式來存檔時,會以其二進位的值來儲存. 101100101010101100. 有緩衝區 :

taji
Télécharger la présentation

File ( 檔案處理 )

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. File(檔案處理) 學習目標:開檔、讀檔、更新檔與關閉檔案

  2. 大綱 • 檔案的觀念 • 檔案的處理方式 • 檔案的函數使用:fopen …

  3. 檔案的觀念 • 檔案儲存的方式可以分為兩種: • 文字檔 • 以ASCII碼儲存,每個字元皆佔有1個位元組。 • 若將數值182956存在文字檔中,會當成6個字元來存檔 以 ASCII 碼儲存 • 二進位檔 • 以二進位的格式儲存,如影像檔或執行檔。 • 將整數182956以二進位的格式來存檔時,會以其二進位的值來儲存 101100101010101100

  4. 有緩衝區: fopen("檔名", "存取模式"); 無緩衝區 open("檔名",開啟模式,存取屬性); 檔案的處理方式 • 程式在執行的時候,會需要一些額外的記憶體來存放資料,以提高程式執行的效率,此暫時存放的區域就稱為緩衝區(buffer)。 • 檔案的處理方式

  5. fopen函數 • 在使用檔案之前,必須先開啟檔案。 • 可利用標準輸入/輸出(standard I/O)函數 fopen 來開啟檔案。 • fopen 函數需要兩個字串參數:檔案名稱、存取模式 • fopen 函數會回傳一個 FILE 指標 • 範例: FILE *fp; 必須宣告一個指向檔案的指標 fp = fopen("phone" , "r"); 將 fp 指標指向 phone 檔案 • 利用fopen函數開啟檔案時,若開啟失敗,會回傳 NULL

  6. fopen函數 • 檔案的存取模式如下表:

  7. 開檔範例 • #include<stdio.h> • void main() • { • FILE *fp ; /*宣告指向檔案的指標fp*/ • fp = fopen ("C:\\abc.txt " , "r" ) ; • if (fp = = NULL) /*判斷開檔是否成功*/ • printf("檔案開啟失敗\n"); • else • printf("檔案開啟成功\n"); • system("pause"); • } 由於反斜線是C語言中的控制字元,因此必須 將路徑中有反斜線(\)的部分再加一個反斜線。

  8. 存取檔案的常用函數(1)

  9. /*ch是用來接收讀取的字元*/ /*count用來計算檔案的字元數*/ 讀檔範例 • #include<stdio.h> • void main() • { • FILE *fptr; • char ch; • int count=0; • fptr = fopen("c:\\test.txt" , "r"); • if( fptr != NULL) /*開檔成功*/ • { • while((ch = getc(fptr)) !=EOF ) /*判斷是否到達檔尾*/ • { • printf("%c",ch); • count++; //一次印出一個字元 • } • fclose(fptr); //關閉檔案 • printf("\n 共有 %d 字元\n",count); • } • else • printf("檔案開啟失敗!! "); • system("pause"); • }

  10. 存取檔案的常用函數(2)

  11. 存取檔案的常用函數(3)

  12. /*判斷是否已輸入完畢*/ 寫檔範例 • #include<stdio.h> • void main() • { • FILE *fp; • int c; • fp = fopen("c:\\hello.txt","w"); • while((c=getchar())!=EOF) • fputc(c , fp); /*將字元c輸出到fp所指的檔案*/ • fclose(fp); • }

  13. 將檔案的內容列於螢幕 • #include<stdio.h> • void main() • { • int c, r; • char filename[20]; • FILE *fp; • printf("please input a filename:"); • scanf("%s",filename); • if( (fp=fopen(filename, "r"))==NULL) /*判斷開檔是否成功*/ • printf("Cannot open the file!!\n"); • else • { • while((c=fgetc(fp))!=EOF) /*判斷是否到達檔尾*/ • putchar(c); /*將字元c列於螢幕上*/ • if((r=fclose(fp))!=0) /*判斷關檔是否成功*/ • printf("Cannot close file!\n"); • } • system("pause"); • }

  14. fgets函數應用 • #include<stdio.h> • void main() • { • int r , MAX=80; • char str[MAX],*msg; • FILE *fptr=fopen("C:\\output.txt","r"); • if(fptr==NULL) • printf("檔案開啟失敗\n"); • else • { • while(!feof(fptr)) • { • msg=fgets(str,MAX,fptr); • printf("%s",msg); • } • if((r = fclose(fptr))!=0) • printf("Cannot close file!\n"); • } system("pause"); • }

  15. 存取檔案的常用函數(4)

  16. 練習 • 將以下這篇英文文章的字母全部改成小寫字母。 Water Restrictions to Return to Taoyuan Area WATER RESTRICTIONS ARE RETURNING TO THE TAOYUAN AREA. WATER OFFICIALS SAY STARTING NEXT WEEK... THEY WILL START REMOVING MUD AND SEDIMENT FROM THE SHI-MEN RESERVOIR. THE CLEAN UP OPERATIONS WILL INCREASE THE WATER'S TURBIDITY, AND THEREBY DECREASE OUTPUT FROM A NEARBY WATER PURIFICATION PLANT. TO MAKE THE WATER RESTRICTIONS MORE FAIR, THEY WILL IMPOSED ON A ROTATING BASIS. OVER THE PAST FOUR DECADES... NEARLY 56-MILLION CUBIC METERS OF SEDIMENT HAVE ACCUMULATED IN THE RESERVOIR... WITH NEARLY 35-PERCENT OF THAT TOTAL FROM TYPHOON AERE ALONE.

More Related